$n = 0;
do {
echo "START PAGE\n";
echo "total pages: " . $response->PaginationResult->TotalNumberOfPages . "\n";
echo "current page: " . $currentPage . "\n";
echo "iteration: " . $n;
if ($n == 2) {
break;
}
$j = 0;
foreach($response->SaleRecord as $SaleRecord) {
if ($j == 2) {
break;
}
echo "\n\tSTART RECORD";
foreach($SaleRecord->SellingManagerSoldTransaction as $transaction) {
echo "\n\t\tRECORD INNER";
foreach($getOrders->OrderArray->Order as $orders) {
echo "\n\t\t\tGETORDERS - " . $itemID;
foreach($orders->TransactionArray->Transaction as $transaction) {
echo "\n\t\t\t\tTXN ARRAY - " . $itemID;
}
}
}
$j++;
echo "\n\tEND RECORD";
}
$n++;
$currentPage+= 1;
echo "\nEND PAGE\n\n\n";
}
while (isset($response->SaleRecord) && $currentPage <= $response->PaginationResult->TotalNumberOfPages);
ВЫХОД:
START PAGE
total pages: 231
current page: 1
iteration: 0
START RECORD
RECORD INNER
GETORDERS - 997
TXN ARRAY - 997
END RECORD
START RECORD
RECORD INNER
GETORDERS - 998
TXN ARRAY - 998
GETORDERS - 998
TXN ARRAY - 998
END RECORD
END PAGESTART PAGE
total pages: 231
current page: 2
iteration: 1
START RECORD
RECORD INNER
GETORDERS - 997
TXN ARRAY - 997
GETORDERS - 997
TXN ARRAY - 997
END RECORD
START RECORD
RECORD INNER
GETORDERS - 998
TXN ARRAY - 998
GETORDERS - 998
TXN ARRAY - 998
END RECORD
END PAGE
START PAGE
total pages: 231
current page: 3
iteration: 2
Потратил часы на это, но не могу понять, почему цикл работает несколько раз, даже внутренние циклы! Я должен делать что-то очень глупое, просто не могу найти что и где.
если $ n = 0 и ваше условие разрыва равно $ n == 2, это 2 итерации: $ n = 0 и $ n = 1
То же самое для $ j.
Измените ваши условия на $ n == 1 и $ j == 1 (или $ n < 2 и $ j < 2)
Он разрывается, когда n равно 2. Вы начинаете с n = 0 (первый цикл), а затем он становится n = 1 (второй цикл). Затем он прерывается, когда n == 2 (третий цикл). Вам следует изменить блок перерыва на следующий, и тогда он будет работать:
if ($n == 1) {
break;
}