独特的php多维数组并按事件排序

时间:2016-11-04 12:41:40

标签: php arrays multidimensional-array

我有一个PHP multiD数组,如: -

$a = array($arrayA,  $arrayB, $arrayA, $arrayC, $arrayC, $arrayA...........)

如何获得一个结果数组,该数组具有来自此数组的不同元素,并且首先按照更多的匹配排序: -

array( $arrayA, $arrayB, $arrayC)

因为数组$arrayA在第一个数组中是3次,所以它在结果数组中排在第一位。

我试过了: -

$newArray = array();
$count = count($a);
$i = 0;

foreach ($a as $el) {
if (!in_array($el, $newArray)) {
    $newArray[$i] = $el;
    $i++;
}else{
    $oldKey = array_search($el, $newArray);
    $newArray[$oldKey+$count] = $el;
    unset($newArray[$oldKey]);
}
}
krsort($newArray);

这是完美的工作,但这是一个非常漫长的过程,因为我的数组有数千个元素。在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

试试这样: -

$input = array_map("unserialize", array_unique(array_map("serialize", $input)));

答案 1 :(得分:2)

喜欢@saravanan答案,但结果排序: -

<?php

$input = [['b'],['a'],['b'],['c'],['a'],['a'],['b'],['a']];

$result = array_count_values( array_map("serialize", $input));
arsort($result,SORT_NUMERIC);
$result = array_map("unserialize",array_keys($result));
print_r($result);