我可以在foreach中筑巢吗?

时间:2012-12-02 02:37:06

标签: php arrays foreach

我有array$categories = array("item1", "item2", "item3"); 我还有三个数组:$item1Array = array("hi", "items");$item2Array = array("hi", "items");$item3Array = array("hi", "items"); 我说过这样一个foreach:

foreach ($categories as &$value) {
    echo "<optgroup label='" . $value . "'>';
    $nextArray = $value . "Array";
    foreach($nextArray as &$nextValue) {
        echo "<option value='" . $nextValue . "'>" . $nextValue . "</option>";
    }
}

但收到错误Warning: invalid argument supplied for foreach()。 有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:1)

是的,你可以${$nextArray}。但是注意命名变量不是很好的做法,你可以使用关联数组。

请注意,在这种情况下您不需要使用引用。

$categories = array("item1", "item2", "item3");
$item1Array = array("hi", "items");
$item2Array = array("hi", "items");
$item3Array = array("hi", "items");

foreach ($categories as $value) {
    echo "<optgroup label='" . $value . "'>";
    $nextArray = $value . "Array";
    foreach(${$nextArray} as $nextValue) {
        echo "<option value='" . $nextValue . "'>" . $nextValue . "</option>";
    }
}

答案 1 :(得分:0)

当然,但是您可以从帖子的语法高亮显示中清楚地看到,您在“optgroup”行的末尾使用了'而不是"

此外,您可以使用嵌套数组:

$categories = Array(
  "item1"=>Array("hi","items"),
  "item2"=>Array("hi","items"),
  "item3"=>Array("hi","items"),
);
foreach($categories as $key=>$array) {
  echo "<optgroup label='".$key."'>";
  foreach($array as $value) {
    echo "<option>".$value."</option>";
  }
  echo "</optgroup>";
}