foreach循环嵌套数组json php

时间:2018-10-23 13:29:13

标签: php arrays json foreach nested

如何遍历数组以获取“ converted_amount”值?

stdClass Object
(
[rows] => Array
    (
        [0] => stdClass Object
            (
                [components] => Array
                    (
                        [0] => stdClass Object
                           (
                                [amount] => 5033298.132349431
                                [count] => 1337
                                [rate] => 3.1398800
                                [converted_amount] => 1603021.9952863243
                            )

                        [1] => stdClass Object
                            (
                                [amount] => 458673.0026585825
                                [count] => 325
                                [rate] => 0.45260800
                                [converted_amount] => 1013400.4157520011
                            )

我已经尝试过像这样的foreach,但是它不起作用。我认为在组件和convert_amount之间应该有一些东西-也许是另一个foreach?我不确定。

foreach ($getexvolume as $vol) {
echo $vol['rows'][0]['components']['converted_amount'];}

4 个答案:

答案 0 :(得分:1)

如果有数组,则有一个对象。您必须将数据作为对象使用...

foreach ($getexvolume->rows as $row) {
    foreach ($row->components as $component) {
       echo $component->converted_amount;
    }
}

答案 1 :(得分:0)

   echo $vol->rows[0]->components[0]->converted_amount;

您正在混合数组和对象。您的输出是一个对象,因此您必须像访问对象一样访问它,否则,如果要将其视为数组,则必须将其转换为数组。现在,您可以使用上面的代码。

我认为适合您的问题的一个更好的解决方案是,您像这样在嵌套数组周围循环

foreach($vol->rows[0]->components as $data){
echo $data->converted_amount;
}

答案 2 :(得分:0)

尝试一下:

foreach ($getexvolume->rows[0]->components as $vol) {
       echo $vol->converted_amount;
}

答案 3 :(得分:0)

您拥有的对象是数组和对象的混合体。 数组可以寻址为$array['value'],但对象必须寻址为$object->value

echo $vol->rows[0]->components[0]->converted_amount;

但是,由于您有多个组件,因此需要一个嵌套循环:

foreach ($getexvolume as $vol)
{
  foreach($vol->rows as $row)
  {
    foreach($row->component as $component)
    {
      echo $component->converted_amount;
    }
  }
}

(伪代码-未测试)。

理想情况下,变量将首先被规范化为多维数组或嵌套对象,因此您不必担心语法。