我得到了这个数组:
Array
(
[0] => Array
(
[id] => 1
[name] => tomato
)
[1] => Array
(
[id] => 2
[name] => carrot
)
[2] => Array
(
[id] => 3
[name] => apple
)
)
我想在HTML表单中打印每个键/值对,如下所示:
<select>
<option value="1">tomato</option>
<option value="2">carrot</option>
<option value="3">apple</option>
</select>
所以,我使用foreach循环迭代外部数组中的三个项目,然后尝试在一行中打印内部数组中的项目。我坚持到最后一点。到目前为止我最接近的是:
foreach ($food_opts as $key => $value) {
foreach ($value as $k => $v) {
echo '<pre>' . $v . '</pre>';
}
}
这将检索我需要的数据,但不是以可用的格式:
1
tomato
2
carrot
3
apple
简而言之,您如何定位内部数组中的单个项目?类似的东西:
foreach ($food_opts as $key => $value) {
foreach ($value as $k => $v) {
echo '<pre>' . $v[0] . ' - ' . $v[1] . '</pre>';
}
}
我理解为什么上面的代码不起作用,但无法弄清楚如何获取我想要的数据。
答案 0 :(得分:5)
此处不需要嵌套foreach
。只是做:
foreach ($food_opts as $key => $arr) {
echo '<option value="'.$arr['id'].'">'.$arr['name'].'</option>', PHP_EOL;
}
或者,您可以使用printf()
来获得更清晰的方法:
foreach ($food_opts as $key => $arr) {
printf('<option value="%s">%s</option>', $arr['id'], $arr['name']).PHP_EOL;
}
printf()
系列函数使用%
字符作为占位符。 %s
表示“接受下一个参数并将其打印为字符串”。同样,%d
表示“接受下一个参数并将其打印为int”。
答案 1 :(得分:3)
您只需要一个foreach循环来获取所有详细信息,然后您可以使用循环中指定的变量和范围中的键来调用它们,如下所示
echo '<select>';
foreach ($food_opts as $value)
{
echo '<option value="'.$value['id'].'">'.$value['name'].'</option>';
}
echo '</select>';