3

我有一个相当简单的问题,我一直无法找到解决方案。我想用 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

4 回答 4

5

尝试

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

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

于 2012-05-08T20:38:00.977 回答
3
$names = array();
foreach ($results as $row){
    $names[] = $row['name'];
};

您的问题是$names = array();每次遍历结果集时都声明一个新数组

于 2012-05-08T20:39:28.410 回答
3

您每次都通过在循环内对其进行初始化来覆盖数组值。以下将起作用:

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

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

于 2012-05-08T20:39:47.420 回答
0

您正在循环中声明变量,并希望在不可能的情况下使用它。阅读有关 php 变量范围的信息。

于 2012-05-08T20:40:43.847 回答