Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
array_merge と array_push の違いについて
Search
ショウノシオリ
August 21, 2018
Programming
0
530
array_merge と array_push の違いについて
PHP Meetup Osaka 2018.08
ショウノシオリ
August 21, 2018
Tweet
Share
More Decks by ショウノシオリ
See All by ショウノシオリ
Nuxt / Vue 開発でやりがちな 「読みづらい」「わかりづらい」コード
sshono1210
0
230
開発チームのリーダーとしてどうあるべきか?
sshono1210
3
1.2k
Nuxt.js のディレクトリ
sshono1210
0
2.9k
Nuxt.js で SSR 対応する
sshono1210
1
2.3k
全くデザインを勉強したことのないエンジニアが「なるほどデザイン」を読んで少しだけ勉強した話
sshono1210
0
240
Vue.js の methods と computed
sshono1210
0
110
すぐに使える ES2015 の基本構文3つ
sshono1210
0
80
肌で感じたディレクションとマネジメント
sshono1210
0
72
Vue.jsで遊んでみよう
sshono1210
0
88
Other Decks in Programming
See All in Programming
大規模アプリのDIフレームワーク刷新戦略 ~過去最大規模の並行開発を止めずにアプリ全体に導入するまで~
mot_techtalk
1
440
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
1k
10年もののAPIサーバーにおけるCI/CDの改善の奮闘
mbook
0
820
Introducing ReActionView: A new ActionView-Compatible ERB Engine @ Kaigi on Rails 2025, Tokyo, Japan
marcoroth
3
1k
Go Conference 2025: Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
takehaya
9
1.7k
ソフトウェア設計の実践的な考え方
masuda220
PRO
4
580
Catch Up: Go Style Guide Update
andpad
0
230
CSC305 Lecture 05
javiergs
PRO
0
210
(Extension DC 2025) Actor境界を越える技術
teamhimeh
1
250
dynamic!
moro
10
7.8k
Serena MCPのすすめ
wadakatu
4
990
PHPに関数型の魂を宿す〜PHP 8.5 で実現する堅牢なコードとは〜 #phpcon_hiroshima / phpcon-hiroshima-2025
shogogg
1
220
Featured
See All Featured
Site-Speed That Sticks
csswizardry
11
900
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Why Our Code Smells
bkeepers
PRO
339
57k
GitHub's CSS Performance
jonrohan
1032
470k
Statistics for Hackers
jakevdp
799
220k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Invisible Side of Design
smashingmag
302
51k
Code Reviewing Like a Champion
maltzj
526
40k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Transcript
array_merge と array_push の違いについて ショウノシオリ
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 で要素を追加することができるが、自動的にキーはインデックスが割り振 られてしまうため、連想配列を扱うときには注意が必要