Не получается сгенерировать нужный тип массива PHP
Внутри цикла по выгрузке данных я таким методом генерирую массив, все хорошо, кроме данных которые я не могу добавить
$arResult['TABLE'][$ob['PROPERTY_INITIATOR_VALUE']][$ob['PROPERTY_PRODUCT_NAME_VALUE']] += $ob['PROPERTY_QUANTITY_VALUE'];
Получаю такой ответ
Array
(
[4938] => Array
(
[Карандаши] => 4
[Бумага А4] => 7
)
[4909] => Array
(
[Блокноты 200 лист] => 9
[Календарь настольный] => 3
)
)
Есть второй массив где я собрал все элементы которые есть по списку
$arResult['TABLE_PRODUCTS'][$ob['PROPERTY_PRODUCT_NAME_VALUE']] = $ob['PROPERTY_PRODUCT_NAME_VALUE'];
Array
(
[Карандаши] => Карандаши
[Блокноты 200 лист] => Блокноты 200 лист
[Бумага А4] => Бумага А4
[Календарь настольный] => Календарь настольный
)
Не могу создать массив как указан выше, пример
Array
(
[4938] => Array
(
[Карандаши] => 4
[Блокноты 200 лист] => 0
[Бумага А4] => 7
[Календарь настольный] => 0
)
[4909] => Array
(
[Карандаши] => 0
[Блокноты 200 лист] => 9
[Бумага А4] => 0
[Календарь настольный] => 3
)
)
Как создать массив, или перебрать, что бы получился такой формат исходя из двух заданных данных. Хотя бы подсказку какую нибудь. Спасибо!
Ответы (1 шт):
Автор решения: splash58
→ Ссылка
можно использовать array_replace, чтобы заменять нужные позиции в шаблоне
$arr1 = [
4938 => [
'Карандаши' => 4,
'Бумага А4' => 7,
],
4909 => [
'Блокноты 200 лист' => 9,
'Календарь настольный' => 3,
]
];
$arr2 = [ 'Карандаши', 'Блокноты 200 лист', 'Бумага А4', 'Календарь настольный'];
$res = [];
$arr2 = array_fill_keys($arr2, 0);
foreach($arr1 as $k=>$v) {
$res[$k] = array_replace($arr2, $v);
}
print_r($res);
в результате
Array
(
[4938] => Array
(
[Карандаши] => 4
[Блокноты 200 лист] => 0
[Бумага А4] => 7
[Календарь настольный] => 0
)
[4909] => Array
(
[Карандаши] => 0
[Блокноты 200 лист] => 9
[Бумага А4] => 0
[Календарь настольный] => 3
)
)