DD не работает во вложенном цикле foreach - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь увидеть, что в переменной. Это множественный вложенный foreach. До определенной точки в foreach он может выводить дд. Тогда вдруг это больше не работает, кажется, что Laravel читает поверх него.

Я пробовал с var_dump, и это тоже не работает. Если я набираю случайные слова, это вызывает у них ошибку, поэтому код действительно появляется.

Код:

foreach ($houses as $house) {
        foreach ($house['forms'] as $form) {
            echo 'Hello World';
            foreach ($projectForms['forms'] as $addedForm) {
                dd($form); //This is the dump I would like to see
                if($addedForm['id'] === $form['id']) {
                    array_push($addedForm['streets'], $house['fullStreet']);
                } else {
                    array_push($projectForms['forms'], array('id' => $form['id'], 'name' => $form['name'], 'percentage' => $form['percentage'], 'streets' => $house['fullStreet']));

                }
            }
        }
    }

dd $ Houses:

array:3 [▼
  0 => array:3 [▼
    "id" => 97641
    "fullStreet" => "SomeStreet 1"
    "forms" => array:1 [▼
      0 => array:3 [▼
        "id" => 2456
        "name" => "Some Name"
        "percentage" => 6.6666666666667
      ]
    ]
  ]
  1 => array:3 [▼
    "id" => 97642
    "fullStreet" => "SomeStreet 2"
    "forms" => array:1 [▼
      0 => array:3 [▼
        "id" => 2456
        "name" => "Some Name"
        "percentage" => 6.6666666666667
      ]
    ]
  ]
  2 => array:3 [▼
    "id" => 97643
    "fullStreet" => "SomeStreet 3"
    "forms" => array:1 [▼
      0 => array:3 [▼
        "id" => 2456
        "name" => "Some Name"
        "percentage" => 6.6666666666667
      ]
    ]
  ]
]

dd $ form:

array:3 [▼
    "id" => 2456
    "name" => "Some Name"
    "percentage" => 6.6666666666667
]

dd $ projectForms:

array:2 [▼
  "projectName" => "Some Project Name"
  "forms" => []
]

Мне интересно, почему dd не работает в foreach для $ projectForms. Под эхом над ним он работает.

1 Ответ

0 голосов
/ 11 ноября 2019

Вы должны проверить, существуют ли первые данные в массиве, например: !empty()

foreach ($houses as $house) {
    if(!empty($house['forms']){
        foreach ($house['forms'] as $form) {
            if(!empty($projectForms['forms']){
                foreach ($projectForms['forms'] as $addedForm) {
                    dd($form); //This is the dump I would like to see
                    if($addedForm['id'] === $form['id']) {
                        array_push($addedForm['streets'], $house['fullStreet']);
                    } else {
                        array_push($projectForms['forms'], array('id' => $form['id'], 'name' => $form['name'], 'percentage' => $form['percentage'], 'streets' => $house['fullStreet']));

                    }
                }
            }
        }
    }
}
...