@Dizzy221
PHP Программист

Как разложить массив наименее ресурсозатратно?

Есть массив в таком виде:
array(6378) {
  [0]=>
  array(5) {
    ["code"]=>
    string(5) "1"
    ["model_id"]=>
    string(5) "1"
  }
  [1]=>
  array(5) {
    ["code"]=>
    string(5) "2"
    ["model_id"]=>
    string(5) "3"
  }
  [2]=>
  array(5) {
    ["code"]=>
    string(5) "3"
    ["model_id"]=>
    string(5) "2"
  }
  [3]=>
  array(5) {
    ["code"]=>
    string(5) "4"
    ["model_id"]=>
    string(5) "1"
  }
  [4]=>
  array(5) {
    ["code"]=>
    string(5) "5"
    ["model_id"]=>
    string(5) "3"
  }

Как его привести к такому виду:
array(3) {
  [3]=>
  array(2) {
    [0]=>
    string(1) "5"
    [1]=>
    string(1) "2"
  }
  [2]=>
  array(1) {
    [0]=>
    string(1) "3"
  }
  [1]=>
  array(2) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "4"
  }
}

То есть нужно поместить model_id в ключ и к нему отдать все значения code, которые относятся к данному model_id.
Сделал с помощью 2 foreach, но очень затратно по времени, очень много значений, может есть какие то способы..
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
$result = [];
foreach($array as $item) {
    if (!isset($item['model_id']) || !isset($item['code_id']))
        continue;

    $model_id = $item['model_id'];
    if (!isset($result[$model_id]))
        $result[$model_id] = [];

    $result[$model_id][] = $item['code_id'];
}

С тела
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы