• ベストアンサー

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

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

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
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

  • [PHP]ループ内の配列取得、表示について

    質問させていただきます。 データをDBから取得しwhileで全てのデータを配列として出力しているとします。 (whileの中で出力し、3つのデータがあるため3回ループされている) 結果 array(1) { [0]=> string(5) "17:10" } array(2) { [0]=> string(5) "17:10" [1]=> string(5) "17:25" } array(3) { [0]=> string(5) "17:10" [1]=> string(5) "17:25" [2]=> string(5) "11:15" } 現在の出力内容は、 var_dump[$hoge[0]] 出力結果 string(5) "17:10" string(5) "17:10" string(5) "17:10" var_dump[$hoge[1]] 出力結果 NULL string(5) "17:25" string(5) "17:25" var_dump[$hoge[2]] 出力結果 NULL NULL string(5) "11:15" という出力になっていますが、最後のarray(3)の部分だけを抜き出したいです。 その場合はどのようにすればよいのでしょうか? -理想の結果- 利用したいのはarray(3)の部分だけ。 var_dump[$hoge[0]] "17:10" var_dump[$hoge[1]] "17:25" var_dump[$hoge[2]] "11:15" 説明不足かもしれませんが、よろしくお願いいたしますm(_ _)m

    • ベストアンサー
    • PHP
  • PHP 配列

    多重の質問申し訳ございません。現在配列をvar_dumpすると array(3) { [0]=> string(32) "hogehoge" [1]=> string(32) "pipyup4646" [2]=> string(9) "1000%" } array(3) { [0]=> string(32) "testtest" [1]=> string(32) "kodsaf45454” [2]=> string(9) "500%" } prinfをしましたら出力結果が array(英語,英数字,値); という形になっているみたいです。 これを[英語][英数字] = 値というのは可能でしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • [php]mysqlデータ配列取得について

    お世話になります。検索しても中々辿り着けなかったので質問させていただきます。 途中から //mysqlより全データ検索 $result = mysql_query('SELECT id FROM hoge ORDER BY id'); //添字配列として全データ取得   while($row = mysql_fetch_row($result)){ //ここの処理で$rowの配列を一行の配列として足していきたい。 var_dump($row); print('<br />');   } 現在の出力内容は array(1) { [0]=> string(1) "5" } array(1) { [0]=> string(1) "6" } array(1) { [0]=> string(1) "7" } array(1) { [0]=> string(1) "8" } こうした形で出力されます。 理想の出力内容は各arrayを足して、 array(4) { [0]=> string(1) "5" [1]=> string(1) "6" [2]=> string(1) "7" [3]=> string(1) "8"} 一行として出力したいのですが、一向にできる気配がありません。 初歩的なものだと思いますが、とても困ってます。何卒よろしくお願いいたしますm(_ _)m

    • ベストアンサー
    • PHP
  • セッション変数の受け渡しができない

    a.php: <?php session_start(); $_SESSION['test'] = "ok"; echo "<html><body>\n"; echo "<pre>\n"; var_dump($_SESSION); echo "</pre>\n"; echo "<a href=\"./b.php\">結果ページへ</a>"; echo "</body></html>\n"; ?> b.php: <?php session_start(); echo "<html><body>\n"; echo "<pre>\n"; var_dump($_SESSION); echo "</pre>\n"; echo "</body></html>\n"; ?> a.php の表示: array(1) { ["test"]=> string(2) "ok" } 結果ページへ b.php の表示: array(0) { } 再読込みでも同様です。 php.ini の Session 関係の項目は書籍やウェブサイトを参考にしておかしなものはないと自己判断していますが、指摘されるものを掲載します。

    • 締切済み
    • PHP
  • PHP 配列 変換

    失礼します現在配列をvar_dumpすると array(3) { [0]=> string(32) "hogehoge" [1]=> string(32) "pipyup4646" [2]=> string(9) "1000%" } array(3) { [0]=> string(32) "testtest" [1]=> string(32) "kodsaf45454” [2]=> string(9) "500%" } array(3) { [0]=> string(32) "ldkfaofpjdsa" [1]=> string(32) "fasdfasdfaf4546" [2]=> string(9) "50000%" } となっておりこれを[0][1] = [2] のように[英語][英数字] = 値のようにしたいです。 ご教授いただけると助かります。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPの配列データの出力方法について

    CSVデータをインポート後に、array関数などで処理した後、 処理したデータを順次表示したいのですが、上手くいきません。 現在は、 foreach (func_get_args($csv_output) as $v) ; var_export($v); と記述しているのですが、これだとarrayが画面に出てしまいます。 print、echoだと表示が出来ず、 print_r、var_dumpだとvar_exportより少し多めに余計な表示が出てしまいます。

    • ベストアンサー
    • PHP
  • 【PHP】配列に出てくるこの名称はなんですか?

    PHP初心者です。 専門用語について教えてください。 $myAr[0] = 'あ'; $myAr[1] = 'い'; var_dump($myAr); としたとき、 array(2) { [0]=> string(3) "あ" [1]=> string(3) "い" } と出力されると思いますが、この[0][1]の「名称」は何でしょう? 意味はわかりますが呼び名がわからずすっきりしません。 キーじゃないですしね。 お詳しい方、よろしくお願いいたします。

    • 締切済み
    • PHP
  • レスポンスから値を取得したい

    PHPであるWebサービスにリクエストしたら以下のようなレスポンスが返ってきました。 var_exportとvar_dumpで出力した例は以下のとおりですが、この中から要素idの値(test1234)を取得するにはどのようにしたら良いのでしょうか? ■var_exportで出力した場合  API\Data\Response::__set_state(array('attributes' => array ('id' => 'test1234', …))) ■var_dumpで出力した場合  object(API\Data\Response)[20]   protected 'attributes' =>    array (size=9)     'id' => string 'test1234' (length=8)     … ※「API\Data\Response」の\は実際にはバックスラッシュです。 どうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPの配列の扱い方

    配列を勉強中なのですが、 よく判らなくなってしまったので教えてください。 print var_dump($aa); を実行すると array(5) { [0]=> string(2) "AE" [2]=> string(1) "C" [4]=> string(1) "F" [5]=> string(1) "N" [6]=> string(1) "Y" } とか array(2) { [27]=> string(2) "BA" [41]=> string(2) "BP" } とかかえってくる配列$aaがあるのですが、 この"AE"や"C"や"BP"など文字情報だけを見たい場合はどのように表記すればいいのでしょうか?

    • ベストアンサー
    • PHP
  • 配列から特定の語を含むものだけを取り出したいです

    var_dump($text); を実行すると array(XX) { [0]=> string(YY) "りんご食べたい。" [1]=> string(YY) "イタリアン食べたい。" [2]=> string(YY) "ごりら見た。" [3]=> string(YY) "雪まつりに行きたい。" [4]=> string(YY) "うさぎ可愛い!!" } という配列があり、そこから $key = array("りんご","ばなな","ごりら","うさぎ"); の単語を含む文章だけ取り出したいです。 以前も同じような質問をし、アンサーをいただき、このように試したのですが、 $key_text = array(); foreach($text as $v1){ foreach($key as $v2){ if(strpos($v1[0], $v2) !== false){ $key_text[] = $v1[0]; } } } var_dump($key_text); array(0) { } と返ってきてしまいます。どこが間違っているか教えて下さい。お願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう