0

我的文档开头有一个 foreach 循环,它从数组中提取数据并设置一些变量以供以后使用。假设这个例子$foo中有10 个数组,其中的键为IDName

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.

10, 10, 10, 10, 10, 10, 10, 10, 10, 10

如果我在第一个 foreach 循环中回显$idand ,我会看到所有 10 个不同的名称和 ID。$name

1,2,3,4,5,6,7,8,9,10

我不能在同一个数组上调用第二个 foreach 循环吗?如果不将所有内容都放入单个 foreach 循环中,我将如何做呢?我想让它保持井井有条,并将变量放在顶部附近,同时在文档中稍后输出所有内容。

4

2 回答 2

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;
}

但这完全没有必要

于 2013-04-09T14:51:24.627 回答
0

你的意思是你想显示所有的ID,然后是所有的名字?如果是这样,您可以使用以下示例。

第一个循环是。

foreach ($foo as $bar) {
    $ids[] = $bar['id'];
    $names[] = $bar['name'];
}

然后你可以使用第二个循环而不是第二个循环。

echo explode($ids,",");
echo explode($names,",");
于 2013-04-09T14:56:00.790 回答