Добавление в новый массив, если ключ в проверке нескольких массивов

У меня многомерный массив $items и мне нужно найти его, а затем создать новый массив (ы).

Этот массив создается в конце проверки в интернет-магазине, который я пытаюсь построить, поэтому массив может иметь произвольную длину. Мне нужно создать, чтобы создать новый массив для каждого нового supplier_id так что я могу отправить данные каждому из них отдельно.

У меня уже есть код для заказа, но теперь он принимает все данные одновременно. Так что в этом конкретном примере я ожидаю 3 многомерных массива, которые я могу запустить через мой create_order код.

Я знаю, что есть много потоков, говорящих о многомерных массивах, но я не понимаю достаточно, чтобы применить их в моем случае. Большое спасибо за помощь.

Вот что $items может выглядеть как

array (4)
id => 36
count => 1
product => Nette\Database\Table\ActiveRow #7c60
table private => Nette\Database\Table\Selection #739c
data private => array (3)
product_id => 36
price => 219.0
supplier_id => 3
dataRefreshed private => FALSE
names => array (1)
en => "Product 1" (9)
array (4)
id => 180
count => 1
product => Nette\Database\Table\ActiveRow #938b
table private => Nette\Database\Table\Selection #a5f0
data private => array (3)
product_id => 180
price => 375.0
supplier_id => 4
dataRefreshed private => FALSE
names => array (1)
en => "Product 2" (9)
array (4)
id => 309
count => 1
product => Nette\Database\Table\ActiveRow #4c67
table private => Nette\Database\Table\Selection #8f56
data private => array (3)
product_id => 309
price => 40.0
supplier_id => 5
dataRefreshed private => FALSE
names => array (1)
en => "Product 3" (9)

0

Решение

Так что после нескольких часов копания я был поражен, насколько легко это можно сделать

  // searching for all unique supplier_id
$uniqueID = array();
foreach ($items as $item) {
if (!in_array($item['product']['supplier_id'], $uniqueID)) {
array_push($uniqueID, $item['id'] = $item['product']['supplier_id']);
}
}
// visual check of all unique *supplier_id*
dump($uniqueID);

// creation of array where I'm going to insert all necessary data
foreach ($uniqueID as $array) {
$defined_array = [];

// visual check for debugging purposes
dump("start");

// creating multiarray for every unique *supplier_id* and inserting data
foreach ($items as $item) {
if($item['product']['supplier_id'] == $array) {
$defined_array[] = $item;
}
}

// final check of all arrays + debug check for end --
// at the end this block is replaced by *create_order* code
foreach ($defined_array as $array) {
dump($array);
}
dump("end");
}

В конце я надеюсь, что это поможет кому-то по крайней мере.

0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector