1

1 つの値を除いて、配列内の重複する値を削除したい。

例えば:

$array = array ("apple", "orange", "orange", "banana", "grapes","grapes", "apple");

すべての重複値を削除し、「リンゴ」と等しいすべての重複値を保持するにはどうすればよいですか

 $array = array ("apple", "orange", "banana", "grapes", "apple");

約400個の値があります

4

3 に答える 3

2
$seen = array()
foreach ($array as $value)
    if ($value == 'apple' || !in_array($value, $seen))
        $seen[] = $value;

$seen は一意の値とリンゴのみを持つようになります。

于 2011-08-29T22:38:48.693 に答える
1
$numbers = array_count_values($array);
$array = array_unique($array);
$array = array_merge($array, array_fill(1, $numbers['apple'], 'apple'));
于 2011-08-29T22:42:16.317 に答える
0
$array = array ("apple", "orange", "orange", "banana", "grapes","grapes", "apple");

$counts = array_count_values($array);

$new_array = array_fill(0, $counts['apple']-2, 'apple'); // -2 to handle there already being an apple from the array_unique count below.
$new_array = array_merge(array_unique($array), $new_array);
于 2011-08-29T22:41:53.540 に答える