为什么是运营商
$array['country'][]
返回逻辑上$array[]['country']
的内容?
我所说的就是这个。如果你想从MySQL数组中提取每行的['country']的值,[1],[2] ...... [n],你必须使用
$array['country'][]
尽管他们被命令为
$array['row#']['country']
这是因为PHP正在向后读取某些东西,还是因为我只是缺少一些基本的数组信息?
这里有完整的代码
$result = array();
foreach($data as $value){
$array['country'][] = $value['country'];
$array['report'][] = $value['report'];
}
$data = $array;
让我知道,如果我只是愚蠢......我无法理解为什么这样做。
答案 0 :(得分:2)
get an id from the db
SELECT id,country,report from yourdb
while ($row = mysql_fetch_array($result)) {
$array['country'][$row['id']] = $row['country'];
$array['report'][$row['id']] = $row['report'];
}
create an id
SELECT country,report from yourdb
$i=0
while ($row = mysql_fetch_array($result)) {
$array['country'][$i] = $row['country'];
$array['report'][$i] = $row['report'];
$i++
}
答案 1 :(得分:1)
为什么是运营商
$ array ['country'] []
返回什么 从逻辑上讲 $阵列[] [ '国家']
这是因为你以这种方式构建数组:
如果使用$array['country'][] = $value['country'];
,则要向子数组添加新值,该子数组是country
键下包含数组的一部分。因此它将映射到$array['country'][]
,否则你不能指望。
如果您想要映射到array[]['country']
,那么(使用部分代码来自
@ Lawrence的回答),您必须使用显式数字索引作为关键字添加新值:
SELECT country,report from yourdb
$i=0;
while ($row = mysql_fetch_array($result)) {
$array[$i]['country'][] = $row['country'];
$array[$i]['report'][] = $row['report'];
$i++;
}
答案 2 :(得分:1)
假设$data
是由你使用循环构建的,就像你在评论中粘贴的那样(while($row=mysql_fetch_assoc($result)){$data[]=$row;}
)那么我的答案就是因为这正是你要求PHP做的。
概念$data[] = some-value-here
表示获取该值并使用自动生成的密钥将其添加到$data
数组的末尾,我根本不在乎。也就是说,PHP基本上会看到最后一项的键是什么,添加1并将其用作要添加到数组中的项的键。
所以你正在用循环做的是构建一个数组,其键是从0开始的数字并递增(每个循环+1,这是[]
效果)并使用这些键来获取你正在获得的行关闭数据库结果集。
如果您想以您描述的方式访问$data
,则必须更改构建方式。请参阅Lawrence Cherone's answer。