2017-11-20 15 views
0

奇妙なビットなので、配列内のすべての重複を取得し、それぞれを別々の配列に保存します。説明するのは少し難しいので、例を試してみましょう。各重複の多くは、それぞれに存在するどのように私は見つけるために(この例では、リンゴとオレンジを)すべての重複を検索し、その後にカウントされます自分の別のアレイ内の各を節約するために探しています配列に重複した値を見つけて別の配列に保存してください

$array = array('apple', 'apple', 'apple', 'orange', 'orange', 'banana'); 

配列。

私がそれらを数えたら、私は見つかった量に応じてmysqliクエリを実行します(同じアイテムの最大6つまでしかありません)。

例の理想的な出力は、この質問にはあまり意味がない場合、私は事前に謝罪

$array1 to be ('apple', 'apple', 'apple'), $array2 to be ('orange', 'orange') and $array3 would be ('banana') 

だろうが、それは私が説明するのはかなり困難です。次いで

+0

とそのかなり単純な論理を行うことができる、あなたは何を試してみましたか?ヒントが必要です:https://stackoverflow.com/questions/3450022/check-and-return-duplicates-array-php –

+0

@LawrenceCherone私は自分の質問を投稿する前にその投稿を見ましたが、それは私の問題を解決するようには見えません問題。私は値を数えたいと思っていません。配列をさまざまな配列に分割することを考えています。新しい配列はそれぞれの複製を含んでいます(私の出力例で説明したように)。これが可能な方法があると思いますか? – DisplayName

答えて

1
$count = []; 
$array = ['apple', 'apple', 'apple', 'banana', 'banana', 'orange', 'orange']; 

foreach ($array as $a) { 
    $count[$a]++; 
} 

print_r($count); 

アレイ( [リンゴ] => 3 [バナナ] => 2 [オレンジ] => 2)

あなたができたキーを持つつのアレイをループ= >値を取得して '果物'とオカレンスを取得します。

編集:大文字と小文字を区別しない検索の場合は、キーを大文字/小文字にする必要があります。

+0

これはうまくいくと思われます。問題の「果物」がわからない場合は、これも実行可能でしょうか?キーウィがリストにあり、トマトもいくつか選択されていますが、アレイに何か出現したかどうかをチェックするためにそれらをループする必要がありますか?申し訳ありませんが質問には、私は(明らかに)ひどい配列 – DisplayName

1

これはarray_count_values()array_fill()機能

$array = array('apple', 'apple', 'apple', 'orange', 'orange', 'banana'); 

// counts all the values 
$count = array_count_values($array); 

// result array 
$result = array(); 

// Loop and push new array filled with values times count 
foreach ($count as $key => $value) { 
    $result[] = array_fill(0, $value, $key); 
} 

// Print result 
echo '<pre>'; 
print_r($result); 
関連する問題