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
510
array_merge と array_push の違いについて
PHP Meetup Osaka 2018.08
ショウノシオリ
August 21, 2018
Tweet
Share
More Decks by ショウノシオリ
See All by ショウノシオリ
Nuxt / Vue 開発でやりがちな 「読みづらい」「わかりづらい」コード
sshono1210
0
210
開発チームのリーダーとしてどうあるべきか?
sshono1210
3
1.2k
Nuxt.js のディレクトリ
sshono1210
0
2.9k
Nuxt.js で SSR 対応する
sshono1210
1
2.2k
全くデザインを勉強したことのないエンジニアが「なるほどデザイン」を読んで少しだけ勉強した話
sshono1210
0
220
Vue.js の methods と computed
sshono1210
0
100
すぐに使える ES2015 の基本構文3つ
sshono1210
0
72
肌で感じたディレクションとマネジメント
sshono1210
0
64
Vue.jsで遊んでみよう
sshono1210
0
81
Other Decks in Programming
See All in Programming
A2A プロトコルを試してみる
azukiazusa1
2
1.4k
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
3
760
RailsGirls IZUMO スポンサーLT
16bitidol
0
180
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
160
PicoRuby on Rails
makicamel
2
130
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
190
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
550
Rubyでやりたい駆動開発 / Ruby driven development
chobishiba
1
700
猫と暮らす Google Nest Cam生活🐈 / WebRTC with Google Nest Cam
yutailang0119
0
120
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
21
3.9k
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜
yodakeisuke
0
130
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
3
470
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
430
65k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
For a Future-Friendly Web
brad_frost
179
9.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Being A Developer After 40
akosma
90
590k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Raft: Consensus for Rubyists
vanstee
140
7k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
820
Code Reviewing Like a Champion
maltzj
524
40k
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 で要素を追加することができるが、自動的にキーはインデックスが割り振 られてしまうため、連想配列を扱うときには注意が必要