我有一个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);
这是完美的工作,但这是一个非常漫长的过程,因为我的数组有数千个元素。在此先感谢您的帮助。
答案 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);