Обход многомерного массива в цикле
1.
php (01.02.2021 / 13:48)
Есть многомерный массив, при его обходе пришлось использовать вложенные циклы. И вот один из внутренних циклов после отработки (обход массива и запись пройденных данных в другой массив), когда снова до него доходит очередь записывает только что прочитанные данные вместе с предыдущими. Т.о. после первой отработки цикла в массив записались 3 строки данных, после второй 6 строк, при этом первые 3 из предыдущего прохода, после третьей 9 и также уже первые 6 строк - накопительный эффект от предыдущих двух отработок, и т.д. После каждой отработки он тянет за собой данные из предыдущего обращения к циклу и записывает их в конечный массив вместе с новыми данными. Наверное многие сталкивались с этим, подскажите пжл решение проблемы.
for() {
for() {
for(){ // проблемный цикл. Когда до него снова доходит очередь он
записывает прочитанные данные в массив вместе со всеми
предыдущими.
}
}
}
2.
Алик Кутакбашев (01.02.2021 / 13:56)
проблем простой надо делать foreach там просто делать надо
3.
php (01.02.2021 / 14:01)
Алик Кутакбашев, foreach что-то не получается, т.к. мне нужен счетчик для обхода, чтобы чего лишнего не записать. А если внутрь for еще foreach запихнуть, то получится тоже самое.
4.
ramzes (01.02.2021 / 15:35)
Ты запись в новый массив покажи.
5.
Вантуз-мен (01.02.2021 / 15:36)
php, скинь пожалуйста данные и что нужно получить, из описания не очень понятно , скорее всего переменные пересекаются, поэтому скинь исходные данные и как массив должен быть в итоге
6.
php (02.02.2021 / 00:29)
Вантуз-мен, 1576 ячеек таких
Добавлено через 00:38 сек.
через foreach тоже дублируются данные с предыдущей итерации
Добавлено через 09:24 сек.
foreach ($offerList = $MatchList[2]['Match']['OfferList'] as $outcomesKeys => $outcomeList) {
foreach ($bets = $outcomeList as $key => $value) {
$number = $value['@attributes']['number'];
$result['totals'][0][$number]['over'] = $value['Outcome'][0]['@attributes']['odds'];
$result['totals'][0][$number]['under'] = $value['Outcome'][1]['@attributes']['odds'];
}
}
7.
php (02.02.2021 / 00:46)
ramzes, только по существу пожалуйста. Я сидел безвылазно часа 4 и под конец уже не соображал что делал)
8.
JustZero (02.02.2021 / 02:18)
php, ты бы данные скинул в json)
9.
php (02.02.2021 / 02:22)
JustZero, чем массив плох?
Кстати, foreach json понимает?
10.
Вантуз-мен (02.02.2021 / 10:50)
php, сделай пожалуйста json_encode массива и выложи сюда, с тем форматом, что ты добавил неудобно работать
11.
php (02.02.2021 / 13:06)
Вантуз-мен,
Добавлено через 06:07 сек.
пробовал for и foreach, и все вместе, в результате одна и та же проблема...
12.
JustZero (02.02.2021 / 14:51)
php, ну в json мы можем забрать твой массив без проблем. А в print_r только иметь представление о его структуре.
13.
Вантуз-мен (02.02.2021 / 14:59)
http://sandbox.onlinephpfunctions.com/code/b8fb9d9e2bf2227ef5292130378fb0d831bdf71d
Не знаю что именно тебе нужно в результате , но обход я написал
Добавлено через 01:31 сек.
Ещё учти там есть odds не в Outcome, но судя по твоему циклу я понял, что они тебе не нужны
14.
Алик Кутакбашев (02.02.2021 / 16:33)
php, напишу кода за 500 рублеу
срок недели платить надо потом ждать
15.
php (03.02.2021 / 03:28)
Вантуз-мен, я немного не об этом...
На каждой итерации вместе с новыми записями переносятся записи от предыдущей. Т.е. одни и те же данные записываются по нескольку раз.
Добавлено через 02:36 сек.
На скрине красным выделены записи, которые записывались два прохода назад. Их по 3-4 шт. должно быть на каждую запись. А в итоге они копятся с каждым новым проходом цикла. Я об этом узнавал.
16.
php (03.02.2021 / 04:57)
Проблему решил: вывод был в контексте цикла.
URL:
https://visavi.net/topics/44484