PHP-массив определяет, содержит ли он уникальное значение

#php #arrays

#php #массивы

Вопрос:

У меня есть несколько PHP-массивов, которые выглядят следующим образом…

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

Мне нужно определить, когда массив содержит все Volvo или только один Volvo сам по себе. Таким образом, в приведенных выше примерах будут передаваться только $ cars1 и $ cars3.

У кого-нибудь есть похожий пример, который я вижу?

Ответ №1:

вероятно, вы ищете что-то вроде этого

 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"));
  

что делает функция, так это перебирает переданный массив с a для каждого и с каждым элементом в массиве сравнивает его с значением сравнения, которое мы передали.

если хотя бы один элемент в массиве не соответствует значению comapring, мы возвращаем false . это также выходит из цикла. если цикл может пройти весь путь, тогда мы знаем, что все значения одинаковы и возвращают true

обратите внимание, что это чувствительный к регистру ss "Volvo" != "volvo" , но вы можете исправить это с помощью чего-то вроде strtoupper или strtolower

Ответ №2:

Используйте array_unique() функцию, за которой следует простое if условие, например:

 $cars1 = array("Volvo", "Volvo", "Volvo");
$car = array_unique($cars1);

if(count($car) == 1 amp;amp; $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