2012-03-07 5 views
0

私はPHPを使い慣れていません。私はJSONをデコードから取り戻す配列は次のとおりです。(申し訳ありませんその奇妙なフォーマットされている場合)、私はこのforeachループを使用しますが、連想配列のうち、個々のアイテムを取得する方法を確認していないしているPHPでJSONからデコードされたオブジェクトの配列をループして値をエコーする方法

array(3) { 
[0]=> array(4) { 
    ["Name"]=> string(22) "Brent's Medical Center" 
    ["date"]=> string(26) "/Date(1330449077600-0700)/" 
    ["dealType"]=> string(13) "Capital Lease" 
    ["id"]=> string(11) "MO-N007175A" 
} 
[1]=> array(4) { 
    ["Name"]=> string(22) "Brent's Medical Center" 
    ["date"]=> string(26) "/Date(1330448929213-0700)/" 
    ["dealType"]=> string(2) "NA" ..... ["id"]=> string(11) "MO-N007172Q" } [2]=> array(4) { ["Name"]=> string(15) "MOC" ["date"]=> string(28) "/Date(-62135571600000-0700)/" ["dealType"]=> string(2) "NA" ["id"]=> string(9) "MC" } } 

foreach ($obj as $key => $value) { 
    print_r($key); 
} 

これが返されます。

012 

私は、しかし、無駄に、他のソリューションを試してみました。たぶん私は何が起こっているのか完全に理解していないが、私が必要とするものは何もできない。 ありがとう!その$データを仮定し

+0

私がやっていることを明確にするために、データを表形式で出力する必要があります。したがって、各配列は基本的にそれ自身の行になり、個々の部分はそれぞれ独自のセルになります。それが私が達成しようとしているものです。 – mdance

答えて

0

あなたは入れ子になっていますオブジェクトを作成するには、次のようにしてください:

echo '<table>'; 

foreach ($obj as $key => $value) { 
    echo '<tr>'; 
    echo '<td>' . $value->Name . '</td>'; 
    echo '<td>' . $value->date . '</td>'; 
    echo '<td>' . $value->dealType . '</td>'; 
    echo '<td>' . $value->id . '</td>'; 
    echo '</tr>'; 
} 

echo '</table>'; 
+0

$ value ["Name"]などをエコーすると、エコーはありません。スクリプトの残りの部分は停止します。 – mdance

+0

<?php ini_set( 'display_errors'、1);を追加できますか? ?>をスクリプトの先頭に追加し、それが記述的なエラーを報告するかどうかを確認します。 – Martin

+0

何も出力しません。 =( – mdance

0

は、あなたの貼り付け、コンテンツに何をvar_dump'dたされています。あなたは、文字列よりも使用可能なものに日付フィールドを処理する必要があります

foreach($data as $record) { 
    //$record['name'] is now something like "Brent's medical center" 
} 

なおけれども。

0

変数は、連想配列で満たされた配列です。したがって、ループを実行して$keyで操作しているときは、それはデータではなく、親配列のインデックスです。 あなたが扱っている配列の部分を変更するだけで、元のコードサンプルが完成します。あなたが直接あなたの値を得ることができるので、

foreach ($obj as $key => $value) { 
    print_r($value); 
} 

は今、各$valueは、例えばをキー名、日付、dealTypeなどの連想配列です。最初のループの$value['Name']は "Brent's Medical Center"となるでしょう

+0

これより近い - 値の配列から情報を取得するにはどうすればよいですか?申し訳ありません..私は完全なnewbです。 – mdance

+0

コードサンプルの後で述べたとおり、 '$ value ['Name']'(さらに明確にするためにさらに修正されています)。あなたはそれ以外に何かしようとしていることはありますか? – Morgon

+0

$ value ['Name']をエコーすると、$ obj配列全体が返され、残りのスクリプトは停止します。 – mdance

0

スクリプトエコーはエコーアレイキー(インデックス)とまったく同じものです。配列には3つの値があるので、そのキーは0,1,2です。

$value variable insode foreach-loopのように見えます。

私はそれが役に立ちそうです。

0

ここでは、問題の簡略化したバージョンを示します。ここにあなたの配列を置き換えてください。

<?php 
$arr[0] = array('uno'=>'one', 'dos'=>'two'); 
$arr[1] = array('AAAA'=>'aaaa', 'BBBB'=>'bbbb'); 

foreach ($arr as $obj) { 
    foreach ($obj as $k=>$v) { 
     echo "key:$k=>val:$v\n"; 
    } 
} 
?> 

あなたが特定の何かにアクセスしたい場合、あなたはこのようにそれを行うことができます。

echo $arr[1]["BBBB"]; // echoes bbbb 

それとも...

echo $arr[1]["Name"]; // echoes Brent's Medical Center 
+0

Okありがとうございます – mdance

1

まあ、それはあなたがそれを返さたい正確にどのように依存します。

foreach ($obj as $key => $value) { 
    print_r($value); 
} 

はこのようにあなたのデータを返します:

array(4) { 
["Name"]=> string(22) "Brent's Medical Center" 
["date"]=> string(26) "/Date(1330449077600-0700)/" 
["dealType"]=> string(13) "Capital Lease" 
["id"]=> string(11) "MO-N007175A" 
} 
array(4) { 
["Name"]=> string(22) "Brent's Medical Center" 
["date"]=> string(26) "/Date(1330448929213-0700)/" 
["dealType"]=> string(2) "NA" 
["id"]=> string(11) "MO-N007172Q" 
} 

... etc 

あなたはあなたの例を経由して、個々のデータ片を望んでいた場合、それはこのようになります:戻ってくる

foreach ($obj as $each_array) { 
    foreach ($each_array as $val){ 
     echo $val . "<br>"; 
    } 
} 

Brent's MedicalCenter 
/Date(1330449077600-0700)/ 
Capital Lease 
... etc 
+0

これは本当に近いです - 私がやっていることを明確にするために - 私はテーブル形式でデータを印刷する必要があります。したがって、各配列は基本的にそれ自身の行になり、個々の部分はそれぞれ独自のセルになります。それが私が達成しようとしているものです。 – mdance

関連する問題