Foreach внутри foreach Переполнение стека

Я пытаюсь создать сайт PHP / Oracle SQL, и у меня возникают проблемы с размещением итерации foreach внутри другой.

foreach($orders as $order) {
if($order["email"] == $email){
echo "<p>".
"<strong>".
"Order: ".$order["ordernumber"].
"</strong>".".".
"</p>";
}
foreach($lines as $line){
if($order["ordernumber"] == $line["ordernumber"] &&
$line["email"] == $email){
echo "<p>".
"<strong>".
$line["name"].": ".$line["ammountordered"]." units"."</strong>".". ".
"</p>";
}
}

}

$ orders — это запрос, который содержит все сделанные заказы. Сначала для каждого заказа я проверяю, сделан ли заказ клиентом, чья электронная почта совпадает с той, в которую он вошел (переменная $ email). Он просто печатает номер заказа.

$ lines — это второй запрос, содержащий все строки заказа в базе данных, связанные с номером заказа в качестве внешнего ключа.

Со следующим foreach я делаю вид, что после того, как напечатан номер заказа, он показывает все строки заказа, принадлежащие этому заказу, if выполняет фильтр, и он работает ТОЛЬКО на первой итерации $ orders.

Order: 330000.

Small box 60mm: 500 units.

Medium-sized box 40mm : 1000 units.

Big box 1cm : 300 units.

Order: 330002.

Это то, что показано на веб-сайте, но у заказа 330002 есть строки заказа в базе данных, поэтому они должны быть напечатаны, но должно быть что-то не так с тем, что я делаю, так как кажется, что это работает только с первым индексом $ итерация заказов.

0

Решение

Движение здесь на конечности, потому что выстрелы в темноте работают хорошо.

если ты var_dump($lines)вы, вероятно, увидите генератор или какой-либо объект БД. Не массив.

Ты не можешь foreach дважды над одним и тем же генератором / объектом БД.

Вместо этого рассмотрите возможность использования $lines = iterator_to_array($lines); или какой-то другой метод «преобразования» результирующего набора в массив перед его использованием.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]