バックエンド

【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. 【Laravel(PHP)】初心者向け アプリのつくり方 をリリースしました【techpit】

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

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

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

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

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

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

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

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

コメント

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

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

CAPTCHA


関連記事

  1. バックエンド

    【mySQL】2つの条件でまとめて数値を合計したい【初心者向け】

    例えば家計簿みたいなWebサービスをつくりたいと思ったら、『データ…

  2. バックエンド

    【検索システム】データベースの作り方や考え方を8ステップで書き連ねてみる

    先日とある『不動産検索システム』をつくりまして、『不動産検索シ…

  3. バックエンド

    ワードプレスでクリック数を知りたい!というご相談をいただいたので対応方法をメモしておきます

    どーも、アオキです。最近ようやく赤ちゃんが寝返り返りしてくれて感極…

  4. バックエンド

    【初心者必見】ビットフライヤーでビットコインキャッシュを買ってみる

    空前絶後の仮想通貨ビックウェーブにいち早く乗っておこうと、いよいよ…

  5. バックエンド

    新しいホテルを探すサービスをつくってみました【楽天トラベルAPI】【条件付】

    プログラミングのスキルが徐々に上がるにつれ、つくりたいものがたくさ…

Sponsored link

最近の記事

  1. 学び・教育

    『ニュータイプの時代』〜リベラルアーツとテクノロジーの融合〜
  2. バックエンド

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

    【三角関数】の使い方〜わかりやすさ重視でまとめてみた【動画あり】
  4. CG関連

    【P5.js】遊ぶようにプログラミングできるクリエイティブコーディング〜はじめの…
  5. バックエンド

    【検索システム】をつくってみた【実際にログインしてさわれます】
PAGE TOP
//記事ページのみに構造化データを出力 //サムネイルを取得 //ここから構造化データの記述