多维数组提取相等的列值

时间:2019-02-14 12:14:55

标签: php arrays element

我有以下数组

  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"
  }
}

可以看到前两个元素具有相同的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 :(得分:2)

没有内置函数可以完全做到这一点。这是逻辑:

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

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

$newArray = array_values($newArray);

首先,您要建立一个新的数组,该数组由客户ID索引,其中包含该客户的所有元素。然后(可选),如果希望对其进行数字索引,请使用array_values清除客户ID数组索引。