PHP

【PHP】オブジェクトと連想配列の違いについて調べてみた【初心者向け】

ある程度『PHP』などのプログラミング言語をやっていると必ずといっていいほど目にするキーワード。

『オブジェクト』『連想配列』

この2つの区別がなかなか曖昧で、わかってるようでわかっていなかったので、

メンターにも確認しつつまとめてみることにしました。

Sponsored link

オブジェクトと連想配列の作り方

『連想配列』ってこんなのです。

『オブジェクト』ってこんなのです。

アオキ
ほとんど一緒やん・・

と思わず突っ込んでしまうほど似ている『オブジェクト』と『連想配列』。

ぱっと見ほとんど一緒なんですが、よくよく見ればちょっとずつ違っています。

連想配列・・keyとvalueがセット。

今回の場合は、

好きな食べ物(key) => ぎょうざ (value)
趣味(key) => プログラミング (value)

という組み合わせになっています。

keyとvalueの間を => (ダブルアロー演算子)で指定しているのも特徴です。

関連記事

オブジェクト

最初にclass オブジェクト名(今回はobject) と書いて、なみかっこ { } の中に値を入れていきます。

『オブジェクト』の中に変数や関数を書いていくんですが、今回は、

$like という変数に、『お好み焼き』という文字を入れて、
$hobby という変数に、『ロードバイク』という文字をいれています。

クラスの中の変数のことをなぜか『プロパティ』と呼ぶことになってたりします。

関連記事

一行ずつセミコロン ; で区切っているのも特徴です。

アオキ
うん、微妙な違いですな。

オブジェクトと連想配列の呼び出し方

『連想配列』の呼び出し方はこんな感じ。

『オブジェクト』の呼び出し方。

アオキ
呼び出し方は書き方が違いますね。

『連想配列』の方は

$array[“like”];

で呼び出すのに対し、

『オブジェクト』の方は、

クラスをインスタンス化(実体化)させた後に、

$objectTest->like;

と 矢印(アロー演算子) からの 変数名(プロパティ) を指定することで、呼び出すことができます。

Sponsored link

オブジェクトか連想配列かの判別方法

オブジェクトかどうかを判別する関数や、
配列かどうかを判別する関数はあるのですが、

メンターにも確認しましたが、とりあえず var_dump しておけばOKです。

先ほどのコードを実行するとこんな表示になります。

頭にarrayと書いてあったら『配列(もしくは連想配列)』で、

頭に object と書いてあれば『オブジェクト』ですね。

オブジェクトなのに $object[“like”] 的な書き方をしてもうまく呼び出せないし、
逆もしかりなので、

どちらのデータ型を使っているか把握しながらプログラミングしていく必要があるんですね。

アオキ
この辺なぁなぁで使っていたんですよね・・(遠い目)

オブジェクトと連想配列はお互いに変換もできちゃう

これまたややこしいことに、

『連想配列』を『オブジェクト』に変換する方法もあれば、

『オブジェクト』を『連想配列』に変換する方法もあります。

参考記事
PHPで連想配列をオブジェクトにする

参考記事
【PHP】オブジェクトを連想配列に変換する方法まとめ

アオキ
なぜにわざわざ変換する必要があるのさ?

と思い調べてみるに、

  • 『連想配列』にするメリット・・後からデータを足したり削除したりしやすい
  • 『オブジェクト』にするメリット・・メソッド(関数)が使えるようになる(修正しやすい)

と、それぞれメリットがあるようで、

用途に合わせて使い分けできるようになると、仕事はかどりそうです。

参考記事
配列をオブジェクトにするメリット

Sponsored link

さいごに

『連想配列』と『オブジェクト』。

ぱっと見 そっくりな両者ですが、

よくよく調べていくうちに、それぞれの違いや長所、メリットなんかがわかるようになってきました。

どっちのデータを触っているか迷ったらまずは var_dump で調べて、

『連想配列』と『オブジェクト』それぞれにあった使い方をしていけるようになるといいですね。

アオキ
何度か試していくうちに、なんとなくわかるようになってくると思いますー

『PHP(Laravel)』ではこんな記事も読まれています。

1. 【PHP】【laravel】CSVエクスポートの方法〜5つのポイント〜

2. 【PHP】オブジェクトと連想配列の違いについて調べてみた【初心者向け】

3. 【PHP】CSVインポートの方法〜大量データもバルクインサートでバッチリ!〜【laravel】

4. 【PHP】【図解】クラスと抽象クラスとインターフェースとトレイトとDIをまとめてみた【初心者向け】

5. 【PHP】配列や連想配列が覚えづらかったので学校に例えてみた【初心者向け】

6. 【PHP】ホームページに天気予報を表示させる方法【Webスクレイピング】【初心者向け】

7. 【Laravel5.5】Webアプリケーションを作るためのゆるめの環境構築編【Node.js】【npm】【Vue.js】【初心者向け】

8. 【PHP】2次元(多次元)配列でデータ取得したいならarray_columnがめっさ便利

  • コメント: 0

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


Sponsored link

関連記事

  1. Laravel

    【PHP】CSVインポートの方法〜大量データもバルクインサートでバッチリ!〜【laravel】

    デスクワークの人なら誰もが知っていると思われる『CSVファイル』。…

  2. PHP

    【PHP】2次元(多次元)配列でデータ取得したいならarray_columnがめっさ便利

    と言ってもおかしくないくらい、『PHP』を扱う時には『配列(連想配…

  3. Laravel

    【PHP】【laravel】CSVエクスポートの方法〜5つのポイント〜

    ちょっと前にPHPでCSVインポートをする方法を書きまして。今回…

  4. PHP

    【PHP】ホームページに天気予報を表示させる方法【Webスクレイピング】【初心者向け】

    先日とある方よりいただいたご要望。確かに冬になれば、地域によっ…

  5. PHP

    【PHP】配列や連想配列が覚えづらかったので学校に例えてみた【初心者向け】

    ググって見ても配列のわかりやすい記事があまりなかったので、…

Sponsored link

最近の記事

アーカイブ

Sponsored link
  1. PHP

    【PHP】配列や連想配列が覚えづらかったので学校に例えてみた【初心者向け】
  2. Nuxt.js

    【Nuxt】入門 Vuexの状態管理を【図解】してみた【初心者向け】
  3. Laravel

    【Laravel(PHP)】でできる事をわかりやすく(ざっくりと)まとめてみた【…
  4. アルデュイーノ Arduino

    【Arduino】ラジコンをつくってみた 〜今ドキのプログラミングの覚え方
  5. HTML/CSS

    【厳選8冊】ホームページを作れるようになるためのおすすめ本【初心者向け】
PAGE TOP