У меня есть массив $products
:
$products = [
1031 => [
'id' => '1031',
'name' => 'TR16',
'price' => 98.75
],
1032 => [
'id' => '1032',
'name' => 'TR16G',
'price' => 148.75
]
];
И массив $ newItemIds:
$newItemIds = [
1031 => [
'id' => 1031,
'quantity' => 4
],
1032 => [
'id' => 1032,
'quantity' => 2
]
];
Я пытаюсь перебрать эти массивы и изменить массив $products
, чтобы он включал quantity
.
Мой цикл выглядит так:
foreach($products as &$product) {
foreach($newItemIds as $key => $value) {
if ($product['id'] == $value['id']) {
$product['quantity'] = $value['quantity'];
}
}
}
На phptester.net он печатает этот результат (именно то, что я хочу):
Array
(
[1031] => Array
(
[id] => 1031
[name] => TR16
[price] => 98.75
[quantity] => 4
)
[1032] => Array
(
[id] => 1032
[name] => TR16G
[price] => 148.75
[quantity] => 2
)
)
Перед циклом я успешно echo json_encode($products)
возвращаюсь к $.ajax
и просматриваю это в консоли.
0: {id: "1031", name: "TR16", price: "98.75"}
1: {id: "1032", name: "TR16G", price: "148.75"}
Запрос $.ajax
работает.
Тем не менее, после цикла, когда я повторяю эхо $products
снова, чтобы увидеть измененный массив (echo json_encode($products)
), я получаю 500 (Internal Server Error)
.
Аякс работает; цикл работает, но что-то не так.
Если у кого-то есть представление о том, что я могу делать неправильно, я был бы признателен за понимание.
Вот весь проверенный код:
<code><?php
$products = [
1031 => [
'id' => '1031',
'name' => 'TR16',
'price' => 98.75
],
1032 => [
'id' => '1032',
'name' => 'TR16G',
'price' => 148.75
]
];
$newItemIds = [
1031 => [
'id' => 1031,
'quantity' => 4
],
1032 => [
'id' => 1032,
'quantity' => 2
]
];
foreach($products as &$product) {
foreach($newItemIds as $key => $value) {
if ($product['id'] == $value['id']) {
$product['quantity'] = $value['quantity'];
}
}
}
echo '<pre>';
print_r($products);
echo '
';