PHP数组检测它是否包含唯一值


PHP array detect if it contains unique value

我有一些PHP数组看起来像这样…

$cars1 = array("Volvo", "Volvo", "Volvo");
$cars2 = array("Volvo", "BMW", "Toyota");
$cars3 = array("Volvo");
$cars4 = array("Volvo", "BMW", "Volvo");
$cars5 = array("BMW", "Toyota");

我需要检测数组何时包含所有沃尔沃或只有一个沃尔沃。所以在上面的例子中,只有$cars1和$cars3会通过。

有人有类似的例子吗?

您可能正在寻找这样的内容

function arrayEq($array,$val)
{
    foreach($array as $item)
    {
        if($item != $val)
        {
            return false;
        }
    }
    return true;
}
$cars1 = array("Volvo", "Volvo", "Volvo");
$cars2 = array("Volvo", "BMW", "Toyota");
$cars3 = array("Volvo");
$cars4 = array("Volvo", "BMW", "Volvo");
$cars5 = array("BMW", "Toyota");
var_dump(arrayEq($cars1,"Volvo"));
var_dump(arrayEq($cars2,"Volvo"));
var_dump(arrayEq($cars3,"Volvo"));
var_dump(arrayEq($cars4,"Volvo"));
var_dump(arrayEq($cars5,"Volvo"));

函数的作用是循环遍历传入的数组,并将数组中的每一项与传入的比较值进行比较。

如果数组中只有一项与比较值不匹配,则返回false。这也打破了循环。如果循环可以一直进行下去那么我们就知道所有的值都是相同的并且返回true

请注意,这是大小写敏感的ss "Volvo" != "volvo",但你可以用strtoupperstrtolower来解决这个问题

使用array_unique()函数后跟一个简单的if条件,如下所示:

$cars1 = array("Volvo", "Volvo", "Volvo");
$car = array_unique($cars1);
if(count($car) == 1 && $car[0] == 'Volvo'){
    // the condition has passed
    // Only $cars1 and $cars3 would get through this if condition
}
// like this, apply the same procedure for other arrays