- ベストアンサー
PHPで配列に要素を追加する方法
- PHPで配列に要素を追加する方法について説明します。配列$colorに$sizeのsizeを追加する方法は、配列の末尾に新しい要素を追加することで行います。
- 具体的なコード例を示します。まず、配列の末尾に新しい要素を追加するために、array_push関数を使用します。
- 以下のコードを実行することで、配列$colorに$sizeのsizeを追加することができます。 ```php // $colorと$sizeの要素を結合して新しい要素を作成 $newElement = array_merge($color, $size); // $colorの値を新しい要素で置き換える $color = $newElement; ```
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> foreach ($color as $v) { > > $v["size"] = $size; > } > > うまくいきませんでした。 そうですね。これだと $color の内容に反映されません。 ANo2 で紹介されているリファレンスを使うのであれば、& をつける必要があります。 foreach ($color as &$v) { $v["size"] = $size; } 参照URL: http://php.net/manual/ja/control-structures.foreach.php > foreach ($color as $key=>$arr) { > $color[$key]['size']=$size; > } > > と言うことで解決できたようなのですが、問題なかったでしょうか? 特段問題ないと思います。 (むしろANo1が冗長だったかなぁと) 質問では size がいろいろな値でしたが、実際には1種類ということですね。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
PHP5以上であればforeachでリファレンス参照ができるので ちょっとだけ便利 foreach($color as $key=> &$arr){ $arr["size"]= $size[$key]["size"]; }
お礼
自己解決なんですが、 foreach ($color as $key=>$arr) { $color[$key]['size']=$size; } と言うことで解決できたようなのですが、問題なかったでしょうか?
補足
質問の仕方を間違えました。 $colorは配列ですが、 追加したい$sizeは配列ではなく変数でした。 foreach ($color as $v) { $v["size"] = $size; } うまくいきませんでした。 引き続きよろしくお願いします。
- tomaju
- ベストアンサー率76% (84/110)
$size の 0 番目の要素の size の値を $color の 0 番目の要素の size にセット $size の 1 番目の要素の size の値を $color の 1 番目の要素に size にセット $size の 2 番目の要素の size の値を $color の 2 番目の要素に size にセット .... ということであれば、ループで配列の要素を列挙して 追加していけばいいかと思います。 ■foreach foreach($color as $key=>$color_item){ $size_item = $size[$key]; $color_item['size'] = $size_item['size']; $color[$key] = $color_item; } ■for $color_count = count($color); for($i = 0; $i < $color_count; $i++){ $color[$i]['size'] = $size[$i]['size']; }
お礼
自己解決なんですが、 foreach ($color as $key=>$arr) { $color[$key]['size']=$size; } と言うことで解決できたようなのですが、問題なかったでしょうか?
補足
同じ補足になりますが、 質問の仕方を間違えました。 $colorは配列ですが、 追加したい$sizeは配列ではなく変数でした。 foreach ($color as $v) { $v["size"] = $size; } うまくいきませんでした。 引き続きよろしくお願いします。
お礼
$sizeは$colorをforeachで回して取得される結果を元に、 別のfunctionで取得されていたので、 結果1個づつと言うことでした。 最初そこまで見えてなかったので質問を間違えてしまいました。 お手数おかけしました。 ありがとございます。