Убедитесь, что массив включает в себя хотя бы набор значений в PHP

Как я могу проверить, что $courseAreas в массив входят хотя бы "айршир" и "файф"?

Я пробовал следующий код, но он не работает:

$courseAreas = array('ayrshire', 'fife', 'cheshire', 'lanarkshire');
$includesAyrshireAndFife = (count(array_intersect(array('ayrshire', 'fife'), $courseAreas)) >= 2 ? true : false);

3 ответа

Решение
$courseAreas = array('ayrshire', 'fife', 'cheshire', 'lanarkshire');
$includesAyrshireAndFife = count(array_intersect(array('ayrshire', 'fife'), $courseAreas)) > 1;

Вам даже не нужен тенарный оператор, потому что с> это уже логическое выражение.

Редактировать:

Я заметил, что ваш код тоже работает. Я просто сократил это.

Попробуйте положить ? true : false вне скобок

$courseAreas = array('ayrshire', 'fife', 'cheshire', 'lanarkshire');
$includesAyrshireAndFife = (count(array_intersect(array('ayrshire', 'fife'), $courseAreas)) >= 2) ? true : false;
var_dump($includesAyrshireAndFife);

$courseAreas = array('ayrshire', 'stirlingshire', 'cheshire', 'lanarkshire');
$includesAyrshireAndFife = (count(array_intersect(array('ayrshire', 'fife'), $courseAreas)) >= 2) ? true : false;
var_dump($includesAyrshireAndFife);

Кажется работать

Но ваш оригинал также, кажется, работает отлично... при каких обстоятельствах вы обнаруживаете, что он выходит из строя?

Ты можешь использовать in_array()

Смотрите: - http://www.w3schools.com/php/func_array_in_array.asp

Другие вопросы по тегам