PHP Meetup Osaka 2018.08
array_merge と array_pushの違いについてショウノシオリ
View Slide
PHPで配列を扱うときによくやってしまうこと配列の 足し算 をする際に、想定していたものよりも深い階層の配列をつくってしまう。
毎回ググって調べてしまうので改めてまとめてみました
アジェンダ● PHPの配列と連想配列の違い● 足し算の方法○ array_merge、+■ array_merge と + の違い○ array_push○ array_merge とarray_push の違い● まとめ
PHPの配列と連想配列の違い● 連想配列:キーと値を組み合わせた配列● 配列:値のみの配列。∴ 連想配列 => キーあり、配列 => キーはあるがインデックスなので書かない
足し算の方法代表的なもの2つ● array_merge、+● array_push
array_merge、+(演算子)配列どうしを結合する関数。結合したら新しい配列を作ることに注意。連想配列、配列どちらでも同じように使える。
● array_merge:勝手にいい感じにしてくれる イメージ<= keyが同じだと上書きされる&数値の場合は採番しなおす● + :融通が利かない イメージ<= keyが同じでも上書きされない&数値の場合も採番しなおさないarray_merge と + の違い
key が同じ場合
key が数値の場合
array_push既存の配列に要素を追加する関数。わざわざ新しい配列をつくる必要はない。
Q:これの原因は?
A:連想配列に array_push を使ってしまったから。array_merge の場合は、配列・連想配列どちらであってもキーが維持されたまま結合される。
一方で、array_push を連想配列に使ってしまうと、キーにはインデックスが自動的に割り当てられてしまうため、階層が深くなってしまう。そのため、この場合は array_merge を使うとよい。
まとめ● 連想配列とは「キーと値をもつ配列」であり、配列も連想配列の一つである。● 配列を結合させるときは array_merge もしくは + を使うことができるが、それぞれのキーに関する挙動は異なるので注意。○ array_merge:キーの上書き&採番しなおし○ + :キーを上書きも採番もしない● array_push で要素を追加することができるが、自動的にキーはインデックスが割り振られてしまうため、連想配列を扱うときには注意が必要