2016-11-04 5 views
-1

で私のようなPHP multiD配列があります -ユニークなPHP多次元配列とソート発生

$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

あなたが – JimHawkins

答えて

2

は次のように試してみてください - @saravanan答えのよう

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

uniqunesを試してみました何を示してください正しいですが、ソート – cske

+1

は尋ねるしようとしません。最初に努力し、次にコードを与えます。コード提供プラットフォームではないコード編集プラットフォームです。 –

+0

@Anant問題を解決できるかどうか答えてください。あなたはhvntそれはあなたがexcuses.iを見つけることではなく、任意のソリューションを与えたそれは効率的ではなかったので私はなぜhvntは私の努力を投稿したstackoverflow thatsです。 – santosh

2

が、ソート結果: -

<?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); 
+1

最初に努力してから、コードを入力してください。コード提供プラットフォームではないコード編集プラットフォーム –

+2

@あなたの意見はよく分かりませんが、将来の読者はOPの努力を気にしません。 – cske

+0

@cskeありがとうございます同じ発生のない2つの要素があります。 EXE。 $ arrayXと$ arrayYの両方が5回発生すると、$ arrayYだけが表示されます。 – santosh