(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が意味不明杉流件 [クヅォ]