Многомерный массив извлекает равные значения столбцов - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть следующий массив

  array(3) {
  [0]=>
  array(3) {
    ["cart_id"]=>
    string(6) "269984"
    ["customer_id"]=>
    string(5) "55152"
    ["product_id"]=>
    string(4) "2323"
  }
  [1]=>
  array(3) {
    ["cart_id"]=>
    string(6) "269985"
    ["customer_id"]=>
    string(5) "55152"
    ["product_id"]=>
    string(3) "730"
  }
  [2]=>
  array(3) {
    ["cart_id"]=>
    string(6) "269986"
    ["customer_id"]=>
    string(5) "66666"
    ["product_id"]=>
    string(4) "7297"
  }
}

Как вы видите, первые 2 элемента имеют одинаковые значения customer_id.Я хочу извлечь все равные или не значения столбца в новый массив, который будет выглядеть так:

  array(2) {
  [0]=>
  array(2) {
    [0]=>
    array(3) {
      ["cart_id"]=>
      int(269984)
      ["customer_id"]=>
      int(55152)
      ["product_id"]=>
      int(2323)
    }
    [1]=>
    array(3) {
      ["cart_id"]=>
      int(269985)
      ["customer_id"]=>
      int(55152)
      ["product_id"]=>
      int(730)
    }
  }
  [1]=>
  array(1) {
    [0]=>
    array(3) {
      ["cart_id"]=>
      int(269986)
      ["customer_id"]=>
      int(66666)
      ["product_id"]=>
      int(7297)
    }
  }
}

Возможно ли это с помощью некоторых функций PHP?Любые идеи будут оценены.

1 Ответ

0 голосов
/ 14 февраля 2019

Нет встроенной функции, чтобы сделать именно это.Это логика:

$initialArray = [/** your data  **/];
$newArray = [];

foreach ($initialArray as $item) {
    $newArray[$item['customer_id']][] = $item;
}

$newArray = array_values($newArray);

Сначала вы создаете новый массив, индексированный по идентификатору клиента, который содержит все элементы для этого клиента.Затем (необязательно), если вы хотите, чтобы он был численно проиндексирован, вы используете array_values для очистки индексов массива идентификаторов клиентов.

...