[PHP] 添字配列や連想配列に要素を追加する方法 [array_push,array_merge]

この記事は約11分で読めます。
スポンサーリンク

(2024年9月)

配列を扱う際、array()を[]で置き換えた「短縮構文」で簡略化できる。

=(イコール)で要素を追加

$colors = [“red”,”green”,”blue”] ;

$colors[] = “yellow” ;// キーを指定せずに追加(キーは自動で入る)

print_r($colors) ;

結果(正解)

Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)

だが、連想配列の場合は、

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

$colors[] = “‘y’=>’yellow'” ;

print_r($colors) ;

結果(不適)

Array
(
[r] => red
[g] => green
[b] => blue
[0] => ‘y’=>’yellow’
)

////////////////////

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

$colors[] = “y=>yellow” ;

print_r($colors) ;

結果(不適)

Array
(
[r] => red
[g] => green
[b] => blue
[0] => y=>yellow
)

以下のようにキーを指定して追加するのが正解。

$colors[‘y’] = “yellow” ;// 正解

「+=」や「array_merge」を使う方法もある(以下「正解」参照)。

array_pushで要素を壹ツ追加

$colors = [“red”,”green”,”blue”] ;

array_push($colors,”yellow”) ;// 要素を配列の最後に追加

print_r($colors) ;

結果(正解)

Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)

だが、連想配列の場合は、

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

array_push($colors,”y”=>”yellow”) ;

print_r($colors) ;

結果(Parse error)

////////////////////

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

array_push($colors,”‘y’=>’yellow'”) ;

print_r($colors) ;

結果(不適)

Array
(
[r] => red
[g] => green
[b] => blue
[0] => ‘y’=>’yellow’
)

////////////////////

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

array_push($colors,”y=>yellow”) ;

print_r($colors) ;

結果(不適)

Array
(
[r] => red
[g] => green
[b] => blue
[0] => y=>yellow
)

////////////////////

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

array_push($colors,[“y”=>”yellow”]) ;

print_r($colors) ;

結果(不適)

Array
(
[r] => red
[g] => green
[b] => blue
[0] => Array
(
[y] => yellow
)

)

array_pushは連想配列には使用不可?

正解

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

$colors[‘y’] = “yellow” ;// キーを指定して追加

print_r($colors) ;

結果(正解)

Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)

////////////////////

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

$colors += [“y”=>”yellow”] ;

print_r($colors) ;

結果(正解)

Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)

////////////////////

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

$colors = $colors + [“y”=>”yellow”] ;

print_r($colors) ;

結果(正解)

Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)

先の「+=」とヤッテるコトは同じ。

////////////////////

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

$colors = array_merge($colors,[“y”=>”yellow”]) ;// 前の配列の後ろに配列を追加(結合)

print_r($colors) ;

結果(正解)

Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)

連想配列に要素を複数追加

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

$colors[‘y’] = “yellow” ;// キーを指定して追加
$colors[‘o’] = “orange” ;// キーを指定して追加

print_r($colors) ;

結果(正解)

Array
(
[r] => red
[g] => green
[b] => blue
[y] => yellow
[o] => orange
)

////////////////////

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

$colors += [“y”=>”yellow”,”o”=>”orange”] ;

print_r($colors) ;

結果(正解)

Array
(
[r] => red
[g] => green
[b] => blue
[y] => yellow
[o] => orange
)

////////////////////

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

$colors = array_merge($colors,[“y”=>”yellow”,”o”=>”orange”]) ;// 前の配列の後ろに配列を追加(結合)

print_r($colors) ;

結果(正解)

Array
(
[r] => red
[g] => green
[b] => blue
[y] => yellow
[o] => orange
)

以上のコトから、「連想配列+複数追加」を考えると、「+=」か「array_merge」で覚えておけばOKなンかはシラン(SILANE)。

添字配列の時

$colors = [“red”,”green”,”blue”] ;

$colors = array_merge($colors,[“yellow”,”orange”]) ;// 正解

連想配列の時

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

$colors = array_merge($colors,[“y”=>”yellow”,”o”=>”orange”]) ;// 正解

array_pushの注意点

array_pushで、要素を配列の最後に追加する場合、array_pushの前に「配列=」と書いてシまゐガティだが、これはアウト!

$colors = [“red”,”green”,”blue”] ;

array_push($colors,”yellow”) ;// 正解

print_r($colors) ;

結果(正解)

Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)

だが、以下のように書くとアウト!

$colors = [“red”,”green”,”blue”] ;

$colors = array_push($colors,”yellow”) ;// エラーではないが不適

print_r($colors) ;

結果(不適)

4 // 意味不明

なンでエラーが出ンの邪!ドァヴォ!!

単に壹ツの要素を追加するダケなら、array_pushではなく

$colors[] = “yellow” ;

とした方が、関数を呼ぶオーバーヘッドがないので速ゐ。

array_pushは、

$color[] = “色” ;

を繰り返すのと同じである。

$colors = [“red”,”green”,”blue”] ;

array_push($colors,”yellow”,”orange”) ;

print_r($colors) ;

Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
[4] => orange
)

↑と↓は同じ。

$colors = [“red”,”green”,”blue”] ;

$colors[] = “yellow” ;
$colors[] = “orange” ;

print_r($colors) ;

Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
[4] => orange
)

array_mergeの注意点

array_mergeで、配列を結合する場合、array_mergeの前に「配列=」を書かなくてもエラーは出ないが、コレはアウトである。

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

$colors = array_merge($colors,[“y”=>”yellow”]) ;// 正解

print_r($colors) ;

結果(正解)

Array
(
[r] => red
[g] => green
[b] => blue
[y] => yellow
)

だが、以下のように書くとアウト!

$colors = [“r”=>”red”,”g”=>”green”,”b”=>”blue”] ;

array_merge($colors,[“y”=>”yellow”]) ;// エラーではないが不適

print_r($colors) ;

結果(不適)

Array
(
[r] => red
[g] => green
[b] => blue
)

「yellow」が追加されていない!

なンでエラーが出ンの邪!ドァヴォ!!

空配列の用意

$colors = array() ;

または

$colors = [] ;

で空(カラ)の配列を宣言できる。

以下はダメな例。

$colors = array(“”) ;

結果(不適)

Array
(
[0] =>
)

キー[0]があるので空(カラ)ではない。

////////////////////

$colors = [“”] ;

Array
(
[0] =>
)

結果(不適)

Array
(
[0] =>
)

キー[0]があるので空(カラ)ではない。

関連:[PHP] 秒を時分秒に変換する方法 [gmdateは危険]

関連:[PHP] checkdateが意味不明杉流件 [クヅォ]

関連:[PHP] 指定日から”+1 day”とか [strtotime]

関連:[PHP] date(日付)のフォーマット一覧 [年/月/日/時/分/秒/曜日]

タイトルとURLをコピーしました