0

私はarray$categories = array("item1", "item2", "item3"); 私も3つの配列を持っています:$item1Array = array("hi", "items");、、 私はこのようなforeachを述べました$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>";
    }
}

ただし、エラーが発生しますWarning: invalid argument supplied for foreach()。これを達成する方法はありますか?

4

2 に答える 2

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>";
    }
}
于 2012-12-02T02:40:55.260 に答える
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>";
}
于 2012-12-02T02:41:11.220 に答える