• ベストアンサー

配列の出力方法について(クラス?)

お世話になります。 $_SESSION['test']をvar_dumpで出力した際に、 ["items":"Test":private]=>array(1) {[0]=>string(3) "100" } といった値がありましたがこれをechoすることは可能でしょうか? $_SESSION['test']['items']['Test']['0']といったように・・・ 大変初歩的な質問かと思いますがよろしくお願い致します(x_x)

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.1

Testクラスのprivateなプロパティですね。クラスに public function getItems() { return $this->items; } といったゲッターメソッドを実装した上で echo $_SESSION['test']->getItems('Test')[0]; で表示できます。但しPHP5.4より古いバージョンの場合は関数の返り値に直接配列アクセスすることは出来ないので、 echo call_user_func('reset', $_SESSION['test']->getItems('Test')); とするなりして工夫する必要があります。reset()は先頭要素を返す関数ですが、本来の目的が配列の内部ポインタ移動であるため、引数を参照渡しでしか渡すことが出来ません。この掟を警告なしに破るためにcall_user_func関数を通すというテクニックを使っています。(もちろん無理にワンライナーにする必要は無いですが) 他に、末尾要素であれば echo call_user_func('end', $_SESSION['test']->getItems('Test')); 順番を問わず使える方法としては echo current(array_slice($_SESSION['test']->getItems('Test'), 36, 1)); などが考えられるでしょう。

news_0203
質問者

お礼

早速の回答ありがとうございました。 クラスの使い方がまだチンプンカンプンでなぜこんな複雑にするメリットが分からないでいます…。 クラスの継承ができると大変便利!など聞くもののそれ以上に出力するのでもこんなに大変になってしまうので…。 いつか便利さに気づける日がくればいいのですが・゜・(つД`) ご教授頂いた方法をもとに foreach($_SESSION['test']->getItems('Test') as $item) { var_dump($item); } として回したところ無事データを取り出せました。 ありがとう御座います!

関連するQ&A

専門家に質問してみよう