如何遍历已在PHP中从JSON解码的对象数组,并回显值

时间:2012-03-07 22:59:55

标签: php arrays json

我是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循环,但我不确定如何从关联数组中获取每个单独的项目。

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

返回:

012

我尝试了其他解决方案,但无济于事。也许我并不完全理解发生了什么,但我无法做任何我需要做的事情。 谢谢!

6 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

假设$ data是粘贴内容中var_dump的内容:

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

请注意,您必须将日期字段处理为比字符串更有用的内容。

答案 2 :(得分:0)

您的变量是一个填充了关联数组的数组。因此,当您在$key上进行循环操作时,这不是数据,而是父数组的索引。 因此,只需更改您正在处理的数组部分即可实现原始代码示例。

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

现在每个$value都是具有键名称,日期,交易类型等的关联数组。因此,您可以直接获取值,例如第一个循环的$value['Name']将是“布伦特医疗中心”

答案 3 :(得分:0)

脚本回显正是你要求它回应 - 数组键(索引)。数组有3个值,因此其键为0,1,2。

看起来你需要$value变量insode foreach-loop。

我希望它有所帮助。

答案 4 :(得分: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

答案 5 :(得分: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>';