如何循环遍历从PHP中的JSON解码的对象数组,并回显这些值


How to loop through an array of objects that have been decoded from JSON in PHP, and echo the values

我是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

我尝试过其他解决方案,但都无济于事。也许我还没有完全理解发生了什么,但我无法得到任何我需要/想要的东西。谢谢

好吧,这完全取决于您希望它如何返回。

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

如果有嵌套对象,请尝试以下操作:

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>';

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

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

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

脚本echo正是您要求它echo的内容-数组键(索引)。数组有3个值,因此其键为0、1、2。

看起来您需要在foreach循环中使用$value变量。

我希望它能有所帮助。

下面是问题的简化版本。用你的数组替换这里的数组。

<?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

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

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

现在,每个$value都是具有键Name、date、dealType等的关联数组。因此,您可以直接获取值,例如,第一个循环的$value['Name']将是"Brent’s Medical Center"