我有一个相当简单的问题,我一直无法找到解决方案。我想用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']
在循环中并在屏幕上看到生成的名称。
答案 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.