Проблема с использованием цикла for во вложенном массиве PHP в отдельные массивы - PullRequest
0 голосов
/ 22 декабря 2018

Я работаю над вложенным массивом в PHP (из API), который имеет 4 уровня.Я пытаюсь использовать цикл for для разделения / разделения вложенных массивов, чтобы они могли существовать как независимые объекты, чтобы я мог использовать их в блейде.например, agency_sales, unit_sales, агенты Когда я беру в браузере dd, я получаю agency_sales, а unit_sales - только один массив.

Они хранятся в переменной с именем rsm

* 1006.* Коллекция массивов
"regional_sales": [
    {
        "id": "75875",
        "agency_sales": [
            {
                "id": "157",
                "unit_sales": [
                    {
                        "id": "777",
                        "agents": [
                            {
                                "agent_no": "75939",
                                "policies": [
                                    "IL*********"
                                ]
                            },
                            {
                                "agent_no": "75939",
                                "policies": [
                                    "IL**********"
                                ]
                            }
                        ]
                    },
                    {
                        "id": "111",
                        "agents": [
                            {
                                "agent_no": "758",
                                "policies": [
                                    "IL2*********"
                                ]
                            },
                            {
                                "agent_no": "75939",
                                "policies": [
                                    "IL20**********"
                                ]
                            }
                        ]
                    }
                ]
            }
        ]
    }
]

цикл My For

for($a=0; $a < count($rsm); $a++){
    $asm = $rsm[$a]['agency_sales'];
    //dd($asm);
    for($b = 0; $b < count($asm); $b++){
        $usm = $asm[$b]['unit_sales'];
        dd($usm);
        for($c = 0; $c < count($usm); $c++){
            $ag = $usm[$c]['agents'];
            //dd($ag);
        }   
    }
}

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Я думаю, что вы на самом деле хотите собрать все фигуры на каждом уровне отдельно, а затем нажать вниз, чтобы создать массивы следующего уровня.Это обеспечит получение всех значений на каждом уровне в соответствующем массиве.Это должно работать:

$asm = array();
for($a=0; $a < count($rsm); $a++){
    $asm = array_merge($asm, $rsm[$a]['agency_sales']);
}
print_r($asm);
$usm = array();
for($b = 0; $b < count($asm); $b++){
    $usm = array_merge($usm, $asm[$b]['unit_sales']);
}
print_r($usm);
$ag = array();
for($c = 0; $c < count($usm); $c++){
    $ag = array_merge($ag, $usm[$c]['agents']);
}
print_r($ag);

Я опустил вывод, так как он довольно длинный, но вы можете увидеть его на демонстрации на 3v4l.org

0 голосов
/ 22 декабря 2018

Вы должны использовать foreach для анализа такого массива:

foreach ($data['regional_sales'] as $regional_sale) {
  // Access $regional_sale['id'] or anything else

  foreach ($regional_sale['agency_sales'] as $agency_sale) {
    // Access $agency_sale['id'] or anything else

    foreach ($agency_sale['unit_sales'] as $unit_sale) {
      // Access $unit_sale['id'] or anything else

      foreach ($unit_sale['agents'] as $agent) {
        // Access $agent['agent_no'] or anything else
      }
    }
  }
}

Демо: https://3v4l.org/q3dAR

...