2015-11-20 2 views
-3

У меня есть массив как это:PHP: Array Сегрегация по индексу стоимости

[ 
     { 
      "id": "13216", 
      "image_type": "ThumbnailImage", 
      "is_primary": "1" 
     }, 
     { 
      "id": "13217", 
      "image_type": "MediumImage", 
      "is_primary": "1" 
     }, 
     { 
      "id": "13218", 
      "image_type": "LargeImage", 
      "is_primary": "1" 
     }, 
     { 
      "id": "13219", 
      "image_type": "ThumbnailImage", 
      "is_primary": "0" 
     }, 
     { 
      "id": "13220", 
      "image_type": "MediumImage", 
      "is_primary": "0" 
     }, 
     { 
      "id": "13221", 
      "image_type": "LargeImage", 
      "is_primary": "0" 
     } 
] 

Я хочу, чтобы преобразовать это в этом:

[ 
    "ThumbnailImage" => [ 
      { 
       "id": "13216", 
       "image_type": "ThumbnailImage", 
       "is_primary": "1" 
      }, 
      { 
       "id": "13219", 
       "image_type": "ThumbnailImage", 
       "is_primary": "0" 
      }, 
     ], 
     "MediumImage" => [ 
      { 
       "id": "13217", 
       "image_type": "MediumImage", 
       "is_primary": "1" 
      }, 
      { 
       "id": "13220", 
       "image_type": "MediumImage", 
       "is_primary": "0" 
      }, 
     ], 
     "LargeImage" => [ 
      { 
       "id": "13218", 
       "image_type": "LargeImage", 
       "is_primary": "1" 
      }, 
      { 
       "id": "13221", 
       "image_type": "LargeImage", 
       "is_primary": "0" 
      } 
     ] 
] 

Я ищу для динамического решения, в котором я могу указать имя ключа и автоматически выделяет массив на основе значений этого индекса, например в этом случае, если я укажу имя индекса image_type, он должен дать мне упомянутый вывод, и если я укажу is_primary, он должен вернуть индексы 0 и 1 с их значениями.

FINAL РЕШЕНИЕ:

public function segregateByIndex($array, $segregateKey) 
{ 
     $result = []; 
     foreach($array as $val) { 
      $result[$val[$segregateKey]][] = $val; 
     } 
     return $result; 
} 
+3

Вы 3k репутацию и мне еще нужно спросить, что вы пробовали до сих пор? Для чего тэг php я могу видеть только JSON? – swidmann

+0

Этот массив показан для целей понимания структуры данных. Я знаю, что синтаксис напоминает формат JSON. –

+0

Плюс иногда человек не знает, с чего начать. Я попытался найти много, но не смог найти ничего похожего на это. –

ответ

2

Это довольно легко решить, используя foreach вроде как

$result = []; 
foreach(json_decode($your_json,true) as $key => $val){ 
    $result[$val['image_type']][] = $val; 
} 
print_r($result); 
+0

Ожидаете ли вы чего-то еще. Я почти уверен, что это сработает. –

+1

Он сделал трюк. –

+0

Да, я знаю, поэтому я сказал, что уверен, что это сработает –

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