【问题标题】:PHP For Loop Printing An ArrayPHP 循环打印数组
【发布时间】:2011-09-26 04:20:17
【问题描述】:

这似乎是一个非常简单的问题,但它让我很难过,哈哈。我正在尝试打印从数据库接收到的行。我想将行存储在数组中,然后使用 for 循环打印它们。我知道查询有效,但是当我尝试打印数组元素时,它只打印单词数组。我已经厌倦了用一个 foreach 循环和一个简单的 for 循环来做这件事。如果有人能指出我正确的方向,那将是一个救命稻草。

打印 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;
}

【问题讨论】:

    标签: php arrays loops


    【解决方案1】:

    $free 数组中的每个条目本身就是一个数组(来自$row)。

    试试

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

    或者,您可能会发现foreach 循环在语义上更合适

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

    编辑:如果您只打算使用来自$row 的关联条目,我建议使用mysql_fetch_assoc() 而不是mysql_fetch_array()

    【讨论】:

    • 谢谢你修复它
    • +1 注意,仅仅因为你只从 MySQL 中选择一个值并不意味着它只返回那个元素,它仍然是数组中的 key=>value 对。
    • +1 我以为他想打印数组,只是查询中的术语值。
    【解决方案2】:

    问题是函数 mysql_fetch_array (顾名思义)返回一个(在你的情况下是关联和数字)数组。所以 $row 实际上是数组(0 => VALUE, 'terms' => 'VALUE')

    所以你想要回显的实际上是一个数组。

    简单修复: 替换:

    $terms[] = $row;
    

    与:

    $terms[] = $row[0];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 2013-02-20
      • 2015-11-01
      相关资源
      最近更新 更多