检查数组中的唯一和非唯一值

4
我们希望得到完整信息的结果,例如Unique = Value1, Value2。Duplicate = Value1。我们有一个数组,如下所示是一个示例数组。
$array1 = array('John Wilkins', 'Poul Warner', 'Rodger Smith', 'David Bentham', 'David Wilkins', 'Brian Smith', 'David Warner', 'John Wilkins', 'Poul Warner', 'David Wilkins', 'Brian Smith', 'David Warner', 'John Wilkins', 'Poul Warner', 'David Bentham', 'David Wilkins');

我们将使用这个函数处理数字值。我们希望以这种格式打印结果。
John Wilkins | Duplicate
Poul Warner  | Duplicate
Rodger Smith  | Unique

等等。


一个快速的问题,以免你的问题被误解。但是,在“Unique = Value1, Value2. Duplicate= Value1”中,如何让Value1既是唯一的又是重复的?你想分别检查名字和姓氏吗?还是你只是打错了? - inquam
2个回答

15

这就是 array_count_values() 基本上所做的事情:

<?php

$array1 = array('John Wilkins', 'Poul Warner', 'Rodger Smith', 'David Bentham', 'David Wilkins', 'Brian Smith', 'David Warner','John Wilkins', 'Poul Warner', 'David Wilkins', 'Brian Smith', 'David Warner','John Wilkins', 'Poul Warner', 'David Bentham', 'David Wilkins');

$counts = array_count_values($array1);
foreach ($counts as $name => $count) {
    print $name . ' | ' . ($count > 1 ? 'Duplicate' : 'Unique') . "\n";
}

输出:

John Wilkins | Duplicate
Poul Warner | Duplicate
Rodger Smith | Unique
David Bentham | Duplicate
David Wilkins | Duplicate
Brian Smith | Duplicate
David Warner | Duplicate

(演示)


如果您能为上述结构编写完整的代码,例如我们打印每个名称的重复或唯一性,我将非常感激您。 - PPS
@Rodger 我不明白。你想要例如多次打印 John Wilkins(每次都以“Duplicate”为前缀)吗?如果是这样,请参见此示例 - jensgram

3
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');

print_r(array_count_values($array));
will output

Array
(
   [apple] => 2
   [orange] => 1
   [pear] => 2
   etc...
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接