Сопоставить определенным образом значения из нескольких массивов
Array
(
[id] => 81822690529384
[product] => 160
[conversions] => 0
[cost] => 596.9
[network] => 60575
)
Array
(
[id] => 783166468822836
[product] => 158
[conversions] => 0
[cost] => 570.5
[network] => 60575
)
Есть длинный список подобных массивов. Нужно их как-то перебрать так, чтобы в рамках одного цикла к переменной $network добавлялись значения [id] (как строка, через запятую), но только тех массивов, в которых значение [network] одинаковое:
$network = '81822690529384, 81822690529384'
Количество уникальных [network] заранее известно и задается через другой массив и вынимается через:
foreach ($ids as $key_1 => $network).
Пробовал разные варианты через циклы, получилось выстреливать по одному, что в целом ок но...
$network = '81822690529384';
$network = '783166468822836';
... но смотрится как-то не очень красиво, т.к. в цикле идет вызов curl через функцию и там уже следующие манипуляции и получается много-много запросов таких по одному [id]. Может есть более красивый вариант реализации, в котором цикл прокручивается по количеству вариантов $network, а не массивов в ответе?
PS: изначально поля [network] в ответе нет, я его добавил сам в попытках что-то нашаманить, в результате время работы стало довольно ощутимым. Изначально возвращается несколько многомерных массивов (кол-во = $network) и внутри них уже массивы с id, product и тд. Если тут можно как то тоже оптимизировать, было бы круто..
Вот все манипуляции над исходном ответом:
$ids = [
3 => 60575,
2 => 60352,
];
foreach ($ids as $key_1 => $network) {
$stat_rows = json_decode($hub->getRowsStat($key_1), true);
for ($k=0; count($stat_rows['rows']) > $k; $k++) {
$stat_rows['rows'][$k]['network'] = $campaign_id_network;
}
}
PPS: третью неделю изучаю php, других языков не знаю пока не пинайте плз.
Ответы (1 шт):
Получилось решить самому!
- Посчитал количество значений в $stat_rows['rows'] и внес в переменную $length;
- Объявил массив: ids[$network] = '';
- Сделали цикл for
for ($k = 0; $length > $k; $k++) {
$ids[$network] .= $stat_rows['rows'][$k]['id'] . ',';
}
Результат:
$network = '81822690529384,....';
$network = '783166468822836,...';