array_merge と array_push の違いについて

array_merge と array_push の違いについて

PHP Meetup Osaka 2018.08

C385e96e5ddd25faba59e3e14fc3e019?s=128

ショウノシオリ

August 21, 2018
Tweet

Transcript

  1. array_merge と array_push の違いについて ショウノシオリ

  2. PHPで配列を扱うときによくやってしまうこと 配列の 足し算 をする際に、想定していたものよりも深い階層の配列をつくってしまう。

  3. 毎回ググって調べてしまうので 改めてまとめてみました

  4. アジェンダ • PHPの配列と連想配列の違い • 足し算の方法 ◦ array_merge、+ ▪ array_merge と

    + の違い ◦ array_push ◦ array_merge とarray_push の違い • まとめ
  5. PHPの配列と連想配列の違い • 連想配列:キーと値を組み合わせた配列 • 配列:値のみの配列。 ∴ 連想配列 => キーあり、配列 =>

    キーはあるがインデックスなので書かない
  6. 足し算の方法 代表的なもの2つ • array_merge、+ • array_push

  7. array_merge、+(演算子) 配列どうしを結合する関数。結合したら新しい配列を作ることに注意。 連想配列、配列どちらでも同じように使える。

  8. • array_merge:勝手にいい感じにしてくれる イメージ <= keyが同じだと上書きされる&数値の場合は採番しなおす • + :融通が利かない イメージ <=

    keyが同じでも上書きされない&数値の場合も採番しなおさない array_merge と + の違い
  9. key が同じ場合

  10. key が数値の場合

  11. array_push 既存の配列に要素を追加する関数。わざわざ新しい配列をつくる必要はない。

  12. Q:これの原因は?

  13. A:連想配列に array_push を使ってしまったから。 array_merge の場合は、配列・連想配列どちらであってもキーが維持されたまま結 合される。

  14. 一方で、array_push を連想配列に使ってしまうと、キーにはインデックスが自動的に割り 当てられてしまうため、階層が深くなってしまう。 そのため、この場合は array_merge を使うとよい。

  15. まとめ • 連想配列とは「キーと値をもつ配列」であり、配列も連想配列の一つである。 • 配列を結合させるときは array_merge もしくは + を使うことができるが、それぞれの キーに関する挙動は異なるので注意。

    ◦ array_merge:キーの上書き&採番しなおし ◦ + :キーを上書きも採番もしない • array_push で要素を追加することができるが、自動的にキーはインデックスが割り振 られてしまうため、連想配列を扱うときには注意が必要