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

时间:2016-10-06 23:32:34

标签: php arrays

我有一些看起来像这样的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会通过。

任何人都有类似的例子我可以看到吗?

2 个答案:

答案 0 :(得分:1)

你正在寻找像this

这样的东西
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"));

函数的作用是循环传递的数组,每个传递数组,并且数组中的每个项目都将它与我们传入的比较值进行比较。

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

请注意,这是区分大小写的"Volvo" != "volvo",但您可以使用strtoupperstrtolower

之类的方法解决此问题

答案 1 :(得分:0)

使用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