WordPressでは、投稿情報やカテゴリ情報などはオブジェクト形式( WP_Object )で取得することが多いかと思いますが、連想配列ととてもよく似ています。一体どこが違うのでしょうか?
結論から言うと、これらには 値の取り出し方に違いが見られました。
追記(2018/05/01):そもそもPHPでは「配列」と「オブジェクト」というのは全く別の型。オブジェクトはクラスから生成する。
$obj を オブジェクト、 $array が 連想配列だとして、それぞれで 'name' というキーの値を出力したい場合、以下のように記述に違いが現れます。
//オブジェクト
echo $obj->name;
//連想配列
echo $array['name'];
説明自体はほぼこれで終わりなのですが、もう少し具体的な例を少し。
get_category() でカテゴリ情報を取得し、カテゴリ名を出力するという状況を例にしてみます。(get_category()は情報をオブジェクトで取得するか、配列で取得できるかを選択できます。)
オブジェクト形式でカテゴリ情報を取得した場合と連想配列でカテゴリ情報を取得した場合、それぞれ次のようにしてカテゴリ名を出力できます。
//オブジェクト形式
$cat = get_category(10);
echo $cat->name; //出力できる
echo $cat['name'] //エラー
//連想配列形式
$cat = get_category(10, 'ARRAY_A');
echo $cat->name; //エラー
echo $cat['name'] //出力できる。
以上になります。
この違いを忘れてしまうと予期せぬエラーを引き起こしてしまうかもしれないので、しっかり覚えておきたいですね。