вставить данные в ассоциативный массив на основе условия переполнения стека

У меня есть два массива:

$sizes а также $percentages

$sizes выглядит так:

 "sizes":{"0":{"size_id":5,"it":"50","us":"32"},"1":{"size_id":4,"it":"48","us":"30"}},

а также $percentages как это:

"percentages":[{"5":"70"},{"4":"30"}]

Я хочу вставить данные из процентного соотношения в массив $ sizes на основе значения $ key в процентном отношении от = к «size_id» в $ размеров и закончить этим:

"sizes_with_percentage":{"0":{"size_id":5,"percentage":70,it":"50","us":"32"},"1":{"size_id":4,"percentage":30"it":"48","us":"30"}},

Я попробовал несколько вложенных циклов, но не нашел правильного пути, и array_push_assoc возвращает «вызов неопределенной ошибки bla bla».

-1

Решение

Предполагая, что вы впервые использовали json_decode создать реальные массивы здесь:

$sizes = json_decode('{"0":{"size_id":5,"it":"50","us":"32"},"1":{"size_id":4,"it":"48","us":"30"}}', true);
$percentages = json_decode('[{"5":"70"},{"4":"30"}]', true);

Вы можете построить $final массив довольно просто.

Первый цикл по размерам, добавьте их в $final, с использованием size_id в качестве ключа массива. Это сделает следующий шаг намного проще.

foreach($sizes AS $size) {
$final[$size['size_id']] = $size;
}

Теперь переберите проценты и используйте ключ, чтобы найти правильное $final запись и добавьте процентный элемент.

foreach($percentages AS $percentage) {
$final[key($percentage)]['percentage'] = current($percentage);
}

Вы сделали! Если вы не хотите $final массив до сих пор по ключу size_id Вы можете удалить это:

$final = array_values($final);

И, конечно, если вы хотите, чтобы вывод был json:

$finalJson = json_encode($final);

Рабочий пример: https://3v4l.org/LR8Tv

1

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

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

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