PHPで配列に要素を追加する方法

このQ&Aのポイント
  • PHPで配列に要素を追加する方法について説明します。配列$colorに$sizeのsizeを追加する方法は、配列の末尾に新しい要素を追加することで行います。
  • 具体的なコード例を示します。まず、配列の末尾に新しい要素を追加するために、array_push関数を使用します。
  • 以下のコードを実行することで、配列$colorに$sizeのsizeを追加することができます。 ```php // $colorと$sizeの要素を結合して新しい要素を作成 $newElement = array_merge($color, $size); // $colorの値を新しい要素で置き換える $color = $newElement; ```
回答を見る
  • ベストアンサー

配列に要素を追加する方法

PHP勉強中です。よろしくお願いします。 配列$colorに$sizeのsizeを追加したいのですが、 たとえば下記の場合どのようにすればよいのでしょうか? $color Array ( [0] => Array ( [serial] => 15802 [color] => red ) [1] => Array ( [serial] => 15802 [color] => black ) [2] => Array ( [serial] => 15802 [color] => blue ) [3] => Array ( [serial] => 15802 [color] => pink ) [4] => Array ( [serial] => 15802 [color] => glay ) [5] => Array ( [serial] => 15802 [color] => green ) ) $size Array ( [0] => Array ( [serial] => 15802 [size] => 5.5 ) [1] => Array ( [serial] => 15802 [size] => 6.5 ) [2] => Array ( [serial] => 15802 [size] => 8.0 ) [3] => Array ( [serial] => 15802 [size] => 2.5 ) [4] => Array ( [serial] => 15802 [size] => 1.0 ) [5] => Array ( [serial] => 15802 [size] => 3.2 ) ) $color Array ( [0] => Array ( [serial] => 15802 [color] => red [size] => 5.5 ) [1] => Array ( [serial] => 15802 [color] => black [size] => 6.5 ) [2] => Array ( [serial] => 15802 [color] => blue [size] => 8.0 ) [3] => Array ( [serial] => 15802 [color] => pink [size] => 2.5 ) [4] => Array ( [serial] => 15802 [color] => glay [size] => 1.0 ) [5] => Array ( [serial] => 15802 [color] => green [size] => 3.2 ) )

  • PHP
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • tomaju
  • ベストアンサー率76% (84/110)
回答No.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種類ということですね。

kyabe2_0751
質問者

お礼

$sizeは$colorをforeachで回して取得される結果を元に、 別のfunctionで取得されていたので、 結果1個づつと言うことでした。 最初そこまで見えてなかったので質問を間違えてしまいました。 お手数おかけしました。 ありがとございます。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

PHP5以上であればforeachでリファレンス参照ができるので ちょっとだけ便利 foreach($color as $key=> &$arr){ $arr["size"]= $size[$key]["size"]; }

kyabe2_0751
質問者

お礼

自己解決なんですが、 foreach ($color as $key=>$arr) {  $color[$key]['size']=$size; } と言うことで解決できたようなのですが、問題なかったでしょうか?

kyabe2_0751
質問者

補足

質問の仕方を間違えました。 $colorは配列ですが、 追加したい$sizeは配列ではなく変数でした。 foreach ($color as $v) { $v["size"] = $size; } うまくいきませんでした。 引き続きよろしくお願いします。

  • tomaju
  • ベストアンサー率76% (84/110)
回答No.1

$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']; }

kyabe2_0751
質問者

お礼

自己解決なんですが、 foreach ($color as $key=>$arr) {  $color[$key]['size']=$size; } と言うことで解決できたようなのですが、問題なかったでしょうか?

kyabe2_0751
質問者

補足

同じ補足になりますが、 質問の仕方を間違えました。 $colorは配列ですが、 追加したい$sizeは配列ではなく変数でした。 foreach ($color as $v) { $v["size"] = $size; } うまくいきませんでした。 引き続きよろしくお願いします。

関連するQ&A

  • 配列の要素を表示しない

    PHP初心者です、宜しくお願いいたします。 下のような配列を表示させるソースを書きましたが、要素を表示しません。 どこが間違っているのかさっぱり分かりません。誰かお助けください。 <?php $color3 = array(0 => " red ", 1 => " green ", 2 => " blue "); foreach($color3 as $key => $val) { echo "現在の添え字は ". $key . "<br/><br/>"; echo "現在の要素は ". $Val . "<br/>"; } ?> 以下のような表示になり、要素が表示されません。 現在の添え字は 0 現在の要素は 現在の添え字は 1 現在の要素は 現在の添え字は 2 現在の要素は

    • ベストアンサー
    • PHP
  • 「要素数が変動する連想配列」に、新たなキーを指定した上で、配列を追加し

    「要素数が変動する連想配列」に、新たなキーを指定した上で、配列を追加したいのですが、 どうすればよいでしょうか? 元の連想配列$hash1 "ヨーロッパ"=>"スペイン", "南米"=>"ブラジル" 追加したい配列$hash2 [0]=>"東京", [1]=>"名古屋" array_pushしたら、下記のようになりました。 "ヨーロッパ"=>"スペイン", "南米"=>"ブラジル" [0]=> ______[0]=>"東京" ______[1]=>"名古屋" これを、下記のようにするには、どうしたらよいでしょうか? "ヨーロッパ"=>"スペイン", "南米"=>"ブラジル", "アジア"=> ______[0]=>"東京", ______[1]=>"名古屋"

    • ベストアンサー
    • PHP
  • ループ処理を抜けた時点での処理回数を表示したい

    今、以下のような「green」が配列の何番目にあるのか調べるプログラムを考えています。 具体的な処理としては、配列の値を順番に調べて「green」を見つけたらループをぬけて何番目にあったかを表示する、といった処理になります。 ただ、現時点ではループをぬけた時何番目だったのかを取得できないでいます。 $numを取得して表示するにはどのような処理を行えばよいでしょうか。 解説していただけると幸いです。 ---プログラム--- class hoge{ function hoge(){ $this->color = array("red", "blue", "pink", "white", "black", "gold", "yellow"...,"green",...); } function test(){ for($i = 0;$i < count($this->color);$i++){ if($this->color[$i] == 'green'){ echo $this->color[$i]."\n"; break;###ここでループをぬける } } echo "緑は${num}番目"; } } $a = new hoge(); $a->test(); ---

    • ベストアンサー
    • PHP
  • PHPの配列要素に別の配列を入れるには?

    とある商品情報を管理するPHPプログラムを書いています。 最終的に、$Paramsの'goodIdArray'という要素に商品情報を2つ入れたいと思っています。 以下の通りに書いてみたんですが、うまくいきません。 $goods_id = array( 'goods_id' => '商品1', 'goods_id2' => '商品2'); $info['goods_id'] = $goods_id;  #$info配列の「goods_id」という要素にgoods_id配列を入れる $goodsIdArray[] = $info['goods_id']['goods_id']; #goodsIdArrayに商品1を入れる $goodsIdArray[] = $info['goods_id']['goods_id2']; #goodsIdArrayに商品2を入れる $Params = array('goodIdArray' => $goodsIdArray) #inParams配列の「goodIdArray」という要素に$goodsIdArray(商品1と商品2)を入れる 無駄に変数を使いまくっているように見えますが、もともとのプログラムが複数のPHPファイルにまたがって動作しているため、変数がこれだけの数になっています。 そもそも、ある配列の要素に別の配列(複数要素をもつもの)は入れられないんでしょうか。 素人の質問でトンチンカンなことを言っているかもしれませんが、ご回答お願いします。

    • 締切済み
    • PHP
  • 配列型の宣言?

    こんにちは。 あるサイトで見たphpのサンプルなのですが、 postされた全ての値を配列に格納するもので、以下のような記述がありました。 foreach((array)$_POST as $key => $value){  $array[$key] = $value; } ポストされた全ての値を、配列$arrayに連想配列として格納しているのはわかるのですが、 foreachの、(array)というのはどういう働きをするものなのでしょうか。 これは、$_POSTが配列であるという宣言でしょうか。 それと、postされた値がない場合、$_POSTを配列だと宣言しておくことで、foreachのエラーを回避するような役割もあるのでしょうか。 恥ずかしながら、(array)のような記述をphpではあまり見ないような気がするのですが、なんというキーワード(?)で勉強すれば理解が深められるかもご教授頂けますと助かります。 宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • php 配列の並べ替え

    言語はphpなのですが以下のような配列があるとします。 $array = array( 1, 2, 3, 4, 5, 6, ... ); 上記を下記のような配列にしたいです。 $array2 = array( array( 1, 5, 9 ), array( 2, 6, 10 ), array( 3, 7, 11 ), array( 4, 8, 12 ) ); また、以下のように値が増減する可能性もあります。 $array2 = array( array( 1, 5, 9 ), array( 2, 6, 10 ), array( 3, 7 ), array( 4, 8 ) ); ご教授ください。

    • ベストアンサー
    • PHP
  • php&html printで二次元配列が表示できない

    <html><body> <?php $array1[]= array(); //二次元配列作成 $array1[0][0] = 123; print "$array1[0][0]"; ?> </body></html> というプログラムを作成してみたのですが、printの中身がhtmlでは”一次元配列$array1[0]”と”文字列[0]”という風に読み取られているようで、 表示が Array[0] となってしまいます。 どうにか二次元配列の値を表示する方法はありませんか?

    • ベストアンサー
    • PHP
  • 連想配列のキー値(連番)を基に、別の配列を作るには?

    下記のように、キー値の一部に連番を持った連想配列 があるのですが、このキー値と連番で別の配列を 簡単に作る方法は無いでしょうか? もとの配列 $ary = array("item0"=>"x","item1"=>"y","item2"=>"z","data0"=>"o","data1"=>"p","data2"=>"q"); 上の$aryから $item=array([0]=>"x",[1]=>"y",[2]=>"z"); $data=array([0]=>"o",[1]=>"p",[2]=>"q"); のような形の配列を得たいのです。 foreach($ary as $key => $val){ } の構文で、$key値を調べて分断し、新しい配列に pushしていくしかないでしょうか? ※PHP4.3です

    • ベストアンサー
    • PHP
  • 配列のキー取得

    現在の$str配列には、下記のようになっています。 Array ( [9] => test [5] => aaa [7] => bbb) print_r(array_keys($str)); とすると下記のように配列のキー値がわかりますが、 Array ( [0] => 9 [1] => 5 [2] => 7) キーを下記のように一つづつほかの配列に代入したい場合はどのようにしたらいいのでしょうか? for($i=0;$i<count($str);$i++){ $new_str[$i]=キーを取得する関数; } ご教授お願いいたします。

    • ベストアンサー
    • PHP
  • 連想配列の一部分を全て表示したいのですが・・。

    すみません。phpの事はあまりわからないのですが、以下のような連想配列がありまして、 (下記のような連想配列が大量にあります。) Array ( [0] => Array ( [a] => 1111 [0] => 1111 [b] => 2222 [1] => 2222 [c] => 3333 [2] => 3333 ) [1] => Array ( [a] => 5555 [0] => 5555 [b] => 6666 [1] => 6666 [c] => 7777 [2] => 7777 ) ) 上の配列から下記の配列のみ全て表示したいのですがどう記述したらよいでしょうか。 Array[0][a] Array[0][b] Array[0][c] Array[1][a] Array[1][b] Array[1][c]

    • ベストアンサー
    • PHP

専門家に質問してみよう