PHP数组:结果集中的内容

时间:2012-05-08 20:36:56

标签: php mysql arrays

我有一个相当简单的问题,我一直无法找到解决方案。我想用mySQL专栏的内容填充一个数组。

基本上我有一个收集结果集的循环,我需要从这个结果集中取一个特定的列并将它放入一个数组中。

    foreach ($results as $row){

      $names = array();

      $names[] = $row['name'];

    };

假设结果集中有40个名称,它们现在应该都在$ names数组中,但是当我尝试在屏幕上打印内容时,我只得到最后的结果:

    echo $names[0]; or print_r($names);

我也尝试过:

    while($row = mysql_fetch_array($results)) {

       $names[] = $row['name']; 

    }

但是我已经有了foreach设置和工作,所以我不想引入另一个循环来填充数组。

我知道查询和循环都在工作,因为我可以直接通过放置来回显每个名称的值:

    echo $row['name'] 
在循环中

并在屏幕上看到生成的名称。

4 个答案:

答案 0 :(得分:5)

尝试

$names = array();
foreach ($results as $row){
      $names[] = $row['name'];
}

您在每个循环上重新声明$names到空白数组,删除您添加到其中的项目。

答案 1 :(得分:3)

$names = array();
foreach ($results as $row){
    $names[] = $row['name'];
};

你的问题是$names = array();每次循环结果集时都声明了一个新数组

答案 2 :(得分:3)

每次通过在循环内部初始化它来覆盖数组值。以下内容适用:

$names = array(); //Outside
foreach ($results as $row){
      $names[] = $row['name'];
}

否则,你正在推动第一次迭代,并在下一次迭代中一次又一次地清除它。

答案 3 :(得分:0)

您在循环中声明变量并希望在不可能之外使用它。 Read about php variables scope.