PHP用于循环打印阵列

问题描述:

这看起来像一个非常简单的问题,但它让我难住了大声笑。我试图打印从数据库收到的行。我想将行存储在数组中,然后使用for循环打印它们。我知道查询可以工作,但是当我尝试打印数组元素时,它只打印字数组。我已经厌倦了使用foreach循环和简单的for循环。如果任何人都能指出我正确的方向,那将是一种拯救生命的方式。PHP用于循环打印阵列

印刷PHP代码

<?php 

    $type = "FREE"; 
    $free = getTerms($type); 
    echo "<p>"; 
    for($j = 0; $j < count($free); $j++) 
    { 
    echo "start".$free[$j]."end"; 
    } 
    echo "</p>";       
?> 

从数据库

function getTerms($type) 
{ 
    $terms = array(); 
    $connection = mysql_open(); 
    $query = "select terms from terms_and_con where accountType='$type' && currentTerms='YES'"; 
    $results = mysql_query($query, $connection) or show_error("signUp.php", "", ""); 

    while($row = mysql_fetch_array($results)) 
    { 
     $terms[] = $row; 
    } 
    mysql_close($connection) or show_error("signUp.php", "", ""); 
    return $terms; 
} 

$free阵列中的每个条目本身是一个阵列(从$row)歌厅的行。

尝试

echo 'start', $free[$j]['terms'], 'end'; 

或者,你可能会发现一个foreach环语义上更合适

foreach ($free as $row) { 
    echo 'start', $row['terms'], 'end'; 
} 

编辑:我建议使用mysql_fetch_assoc()代替mysql_fetch_array()如果你只打算使用$row的关联条目。

+0

三江源这么多,你固定它 – Richard

+0

+1要注意,只是因为你只从MySQL中选择一个值,并不意味着它只返回那个元素,它仍然是一个数组中的key =>值对。 – animuson

+0

+1我以为他想打印数组,只是查询中的术语值。 – ace

这个东西是函数mysql_fetch_array(顾名思义)返回一个(在你的情况下都是关联和数字)数组。所以$行实际上是数组(0 =>VALUE, '条款'=> 'VALUE')

那么你正在尝试呼应实际上是一个数组。

简单的解决方法:更换 :

$terms[] = $row; 

有:

$terms[] = $row[0];