$30 off During Our Annual Pro Sale. View Details »

array_merge と array_push の違いについて

array_merge と array_push の違いについて

PHP Meetup Osaka 2018.08

ショウノシオリ

August 21, 2018
Tweet

More Decks by ショウノシオリ

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. アジェンダ
    ● PHPの配列と連想配列の違い
    ● 足し算の方法
    ○ array_merge、+
    ■ array_merge と + の違い
    ○ array_push
    ○ array_merge とarray_push の違い
    ● まとめ

    View Slide

  5. PHPの配列と連想配列の違い
    ● 連想配列:キーと値を組み合わせた配列
    ● 配列:値のみの配列。
    ∴ 連想配列 => キーあり、配列 => キーはあるがインデックスなので書かない

    View Slide

  6. 足し算の方法
    代表的なもの2つ
    ● array_merge、+
    ● array_push

    View Slide

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

    View Slide

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

    View Slide

  9. key が同じ場合

    View Slide

  10. key が数値の場合

    View Slide

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

    View Slide

  12. Q:これの原因は?

    View Slide

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

    View Slide

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

    View Slide

  15. まとめ
    ● 連想配列とは「キーと値をもつ配列」であり、配列も連想配列の一つである。
    ● 配列を結合させるときは array_merge もしくは + を使うことができるが、それぞれの
    キーに関する挙動は異なるので注意。
    ○ array_merge:キーの上書き&採番しなおし
    ○ + :キーを上書きも採番もしない
    ● array_push で要素を追加することができるが、自動的にキーはインデックスが割り振
    られてしまうため、連想配列を扱うときには注意が必要

    View Slide