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
570
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
array_merge と array_push の違いについて
PHP Meetup Osaka 2018.08
ショウノシオリ
August 21, 2018
More Decks by ショウノシオリ
See All by ショウノシオリ
Nuxt / Vue 開発でやりがちな 「読みづらい」「わかりづらい」コード
sshono1210
0
280
開発チームのリーダーとしてどうあるべきか?
sshono1210
3
1.3k
Nuxt.js のディレクトリ
sshono1210
0
3k
Nuxt.js で SSR 対応する
sshono1210
1
2.3k
全くデザインを勉強したことのないエンジニアが「なるほどデザイン」を読んで少しだけ勉強した話
sshono1210
0
270
Vue.js の methods と computed
sshono1210
0
150
すぐに使える ES2015 の基本構文3つ
sshono1210
0
110
肌で感じたディレクションとマネジメント
sshono1210
0
110
Vue.jsで遊んでみよう
sshono1210
0
120
Other Decks in Programming
See All in Programming
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
490
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
110
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
230
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1.1k
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
490
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
340
メールのエイリアス機能を履き違えない
isshinfunada
0
250
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.9k
リアルな遅延を測る仕様
kota_yata
1
120
yield再入門 #phpcon
o0h
PRO
0
1.2k
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.9k
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.8k
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Designing Experiences People Love
moore
143
24k
Code Reviewing Like a Champion
maltzj
528
40k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Why Our Code Smells
bkeepers
PRO
340
58k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
280
My Coaching Mixtape
mlcsv
0
250
Into the Great Unknown - MozCon
thekraken
41
2.7k
Un-Boring Meetings
codingconduct
0
390
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
440
Six Lessons from altMBA
skipperchong
29
4.4k
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 で要素を追加することができるが、自動的にキーはインデックスが割り振 られてしまうため、連想配列を扱うときには注意が必要