PHP не поддерживает многомерные массивы, по крайней мере, не так, как вы хотите.
Чтобы сделать многомерные массивы на PHP, вы должны использовать вложенные массивы:
$a = [
"keyA" => [
"keyB" => 'somedata';
]
]
Так что вам нужночтобы инициализировать массив:
$cart = [];
$cart[$data->resource_id] = []; // Do this just in the first time that you insert something inside that `resource_id`, otherwise you will resetting the array.
$cart[$data->resource_id][$data->stock_id] = [
//... your data here ...
]
Например, представьте, что вы хотите получить эти данные:
$input = [
[ 'id' => 1, 'stock_id' => 1, 'name' => 'foo' ],
[ 'id' => 1, 'stock_id' => 2, 'name' => 'bar' ],
[ 'id' => 1, 'stock_id' => 3, 'name' => 'biz' ],
]
и упорядочить их по id
и stock_id
.
Вы должны сделать такой скрипт:
$output = [];
foreach ($input as $item) {
if (!array_key_exists($item['id'], $output)) {
$output[$item['id']] = []; // Initializing the 2nd level array
}
$output[$item['id']][$item['stock_id']] = $item;
}
Массив $output
будет выглядеть так:
[
1 => [
1 => [ 'id' => 1, 'stock_id' => 1, 'name' => 'foo' ],
2 => [ 'id' => 1, 'stock_id' => 2, 'name' => 'bar' ],
3 => [ 'id' => 1, 'stock_id' => 3, 'name' => 'biz' ],
]
]
Таким образом, вы можете получить доступ к данным следующим образом:
echo $output[1][3]['name']
// Will output `biz`