2015-10-14 7 views
0

Извините, если это дубликат, но я попытался изо всех сил найти подобный вопрос, но я не был на 100% уверен, что именно искать.слияние многомерного массива PHP

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

Благодаря

array(4) { 
    ["ITEM-CHAIR-v-V0002"]=> 
    array(4) { 
    ["itemcode"]=> string(16) "ITEM-CHAIR-v-V0002" 
    ["sku"]=>string(8) "ITEM-CHAIR" 
    ["quantity"]=>string(1) "4" 
    ["price"]=>string(5) "49.99" 
    } 
["ITEM-CHAIR-v-V0003"]=> 
array(4) { 
    ["itemcode"]=>string(16) "ITEM-CHAIR-v-V0003" 
    ["sku"]=>string(8) "ITEM-CHAIR" 
    ["quantity"]=>string(1) "7" 
    ["price"]=>string(5) "49.99" 
    } 
["ITEM-KNIFE-v-V0001"]=> 
array(4) { 
    ["itemcode"]=>string(22) "ITEM-KNIFE-v-V0001" 
    ["sku"]=>string(14) "ITEM-KNIFE" 
    ["quantity"]=>string(1) "1" 
    ["price"]=>string(5) "45.00" 
    } 
["ITEM-CHAIR-v-V0001"]=> 
array(4) { 
    ["itemcode"]=>string(16) "ITEM-CHAIR-v-V0001" 
    ["sku"]=>string(8) "ITEM-CHAIR" 
    ["quantity"]=>string(1) "4" 
    ["price"]=>string(5) "49.99" 
    } 
} 
+0

Спасибо за быстрый ответ. Я попытался выполнить итерацию через массив и добавив количество, если сов, но я больше борюсь с логикой, но, как я попробовал, просто добавляет количество ВСЕХ предметов в корзине, конечный результат я бы например, в основном есть массив, который содержит sku как ключ и количество как значение, например, из моего массива выше, ключ будет ITEM-CHAIR, а значение будет равным 15, поскольку в корзине 15 стульев, хотя они представляют собой смесь разных вариантов. – user2946343

+0

Если вы предоставили код, который у вас уже есть, вы получите решение быстрее. Вы также можете предоставить ожидаемый массив. Просто добавьте свой вопрос об этой информации. – marian0

ответ

2

Iterate над массивом и просто приращение массив с текущими счетчиками, если вы обнаружили, что ключ существует, или создать новый индекс:

$results = array(); 
foreach ($inputArray as $item) { 
    if (isset($results[$item['sku']])) { 
     ++$results[$item['sku']]; 
    } else { 
     $results[$item['sku']] = 1; 
    } 
} 
+0

Спасибо, хотя это не дает мне точной вещи, за которой я был, что является общим количеством каждой группы ску, она указала мне в правильном направлении, поэтому я буду отмечать ее как правильный ответ. Извините, если мой вопрос был расплывчатым. – user2946343

0

Как я понимаю.

$resultArray = []; 
    foreach ($entryArray as $value){ 
     $resultArray[$value["sku"]][$value["itemcode"]]=$value; 
    } 

Теперь вы получите, что:

array(2) { 
    ["ITEM-CHAIR"]=>{ 
     array(3){ 
      ["ITEM-CHAIR-v-V0003"] => array(4){...} 
      ["ITEM-CHAIR-v-V0002"] => array(4){...} 
      ["ITEM-CHAIR-v-V0001"] => array(4){...} 
     } 
    } 
    ["ITEM-KNIFE"]=>{ 
     array(1){ 
       ["ITEM-KNIFE-v-V0001"] => array(4){...} 
     }  
    } 
} 

Может быть, вы хотите этого. Итак, вы можете использовать count ($ resultArray ["ITEM-X"]), чтобы получить счет sku. И вы также получите лучший отсортированный массив ваших продуктов.

Смежные вопросы