Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

key が同じ場合

Slide 10

Slide 10 text

key が数値の場合

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Q:これの原因は?

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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