バックエンド

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

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

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

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

まるっとまとめてみることにしました。

Sponsored link

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

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

//こっちは連想配列
$array = [
    "like" => "ぎょうざ",
    "hobby" => "プログラミング",
];

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

//こっちはオブジェクト
class object{
    public $like = "お好み焼き";
    public $hobby = "ロードバイク";
}
アオキ
ほとんど一緒やん・・

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

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

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

今回の場合は、

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

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

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

関連記事

オブジェクト

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

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

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

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

関連記事

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

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

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

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

//こっちは連想配列
$array = [
    "like" => "ぎょうざ",
    "hobby" => "プログラミング",
];

//連想配列の中身を表示 (var_dumpはお約束)
var_dump($array);

echo "<br>"; //読みやすくするための改行

//連想配列は [] で呼び出す
echo $array["like"];

echo "<br>";

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

//こっちはオブジェクト
class object{
    public $like = "お好み焼き";
    public $hobby = "ロードバイク";
}

//オブジェクト(クラス)はnewでインスタンス化(実体化)
$objectTest = new object;

//インスタンス(実体)の中身を表示
var_dump($objectTest);

echo "<br>"; 

//オブジェクト(インスタンス)は -> で呼び出す
echo $objectTest->like;
アオキ
呼び出し方は書き方が違いますね。

『連想配列』の方は

$array[“like”];

で呼び出すのに対し、

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

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

$objectTest->like;

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

Sponsored link

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

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

とりあえず var_dump しておけばOKです。

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

array(2) { ["like"]=> string(12) "ぎょうざ" ["hobby"]=> string(21) "プログラミング" } 
ぎょうざ

object(object)#1 (2) { ["like"]=> string(15) "お好み焼き" ["hobby"]=> string(18) "ロードバイク" } 
お好み焼き

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

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

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

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

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

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

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

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

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

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

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

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

と思い調べてみるに、

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

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

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

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

Sponsored link

オブジェクトと連想配列をまとめてみて

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

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

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

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

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

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

2020/2/7 追記
オブジェクトや連想配列、多次元配列の解説を盛り込んだ講座をつくってみましたので、
ぜひご確認くださいませ。

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

1. 【PHP/Laravel】初心者向けの動画をリリースしました【Udemy】

2. 【Laravel(PHP)】初心者向け アプリのつくり方 をリリースしました【techpit】

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

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

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

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

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

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

9. 【Laravel】Webアプリ環境構築の仕方【Vue.js】【初心者向け】

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

アオキ
ツイッターでも記事ネタ含めちょろちょろ書いていくので、よろしければぜひフォローお願いしますm(_ _ )m

アオキのツイッターアカウント


関連記事一覧 (一部広告あり)

コメント

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

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

CAPTCHA


最近の記事

アーカイブ

  1. オンライン教材

    【AWS】【初心者向け】インフラの基礎からわかる講座をリリースしました【Udem…
  2. 生成AI

    Dify講座をリリースしました【非エンジニア向け】
  3. オンライン教材

    【ChatGPT】エンジニア編をリリースしました
  4. データベース

    MySQLの講座をリリースしました
  5. バックエンド

    【Laravel第4弾】Vue.js3(CompositionAPI+Scrip…
PAGE TOP
Ads Blocker Image Powered by Code Help Pro

広告ブロックを摘出しました!!

ブラウザ拡張を使用して広告をブロックしていることが摘出されました。

ブラウザの広告ブロッカーの機能を無効にするか、
当サイトのドメインをホワイトリストに追加し、「更新」をクリックして下さい。

あなたが広告をブロックする権利があるように、
当方も広告をブロックしている人にコンテンツを提供しない権利と自由があります。

Powered By
100% Free SEO Tools - Tool Kits PRO