我在文档的开头有一个foreach循环,它从数组中提取数据并设置一些变量以供稍后使用。让我们说这个示例$foo
中包含 10个数组,其中包含ID
和Name
的键。
foreach($foo as $bar) {
$id = $bar['id'];
$name = $bar['name'];
}
然后,我想要做的是,在我的文档中,我实际上想要为每个$bar
显示这些结果,我想这样做。
foreach($foo as $bar) {
// display all ids
echo $id;
// display all names
echo $name;
}
但我遇到了一个问题。当尝试在第二个foreach循环中显示ID和名称时,它返回10个ID的情况,但ID都是相同的,它是$foo
中最后一个数组的ID。
10, 10, 10, 10, 10, 10, 10, 10, 10, 10
如果我在第一个foreach循环中回显$id
和$name
,我会看到所有10个不同的名称和ID。
1,2,3,4,5,6,7,8,9,10
我可以不在同一个阵列上调用第二个foreach循环吗?如果不将所有内容都放入单个foreach循环中,我将如何进行此操作?我想让它保持井井有条,让变量靠近顶部,同时在文档中输出所有内容。
答案 0 :(得分:0)
虽然为此目的你不需要两个循环,但是假设你这样做,那么你的第二个循环应该看起来像
foreach($foo as $bar) {
$id = $bar['id'];
$name = $bar['name'];
// display all ids
echo $id;
// display all names
echo $name;
}
目前,每次迭代都会为id和name变量赋值,因此在循环结束后你会看到最后的值。
也只是为了参数的缘故,如果你需要分别使用这两个循环,那么你可以在第一个循环中创建一个值数组,并在第二个循环中使用它。但它再次浪费资源,重复一切
$data=array();
foreach($foo as $bar) {
$data[]["id"] = $bar['id'];
$data[]["name"] = $bar['name'];
}
然后
foreach($data as $bar) {
$id = $bar['id'];
$name = $bar['name'];
echo $id;
echo $name;
}
但这绝对是不必要的
答案 1 :(得分:0)
你的意思是你想显示所有的ID,然后是所有的名字? 如果是这样,您可以使用以下示例。
第一个循环是。
foreach ($foo as $bar) {
$ids[] = $bar['id'];
$names[] = $bar['name'];
}
然后代替你可以使用的第二个循环。
echo explode($ids,",");
echo explode($names,",");