Есть ли короткий способ написать это? Как показано ниже:
<?php
$true=1;
$false=0;
$valid = array (
"part1" => $true,
"part2" => $true,
"part3" => $true
);
if($valid == $true){
echo "All the values are True!";
}else{
echo "At list one of the values is False";
}
?>
Вместо этого:
<?php
if($valid['part1'] == $true && $valid['part2'] == $true && $valid['part3'] == $true{
echo "All the values are True!";
}else{
echo "At list one of the values is False";
}
?>
Я попытался написать его, как показано в первом примере, но он не работает
if(!in_array($false,$valid){
echo "All the values are True!";
}else{
echo "At list one of the values is False";
}
Вы можете использовать второй параметр array_keys для поиска значений, соответствующих вашей переменной, и сравнить количество результатов с общим количеством элементов в вашем массиве:
if (count(array_keys($valid, $true)) == count($valid)) {
echo "All the values are True!";
} else {
echo "At leastone of the values is False";
}
Вы можете сделать это с помощью этого:
$array = array(
'key1' => true,
'key2' => true,
'key3' => true,
);
$status = true;
foreach($array as $key => $value) {
if(!$value) {
$status = false;
break;
}
}
if($status) {
echo "All the values are True!";
}
else {
echo "At list one of the values is False";
}
его массив не переменная, которую вы не можете просто === it
вам придется использовать
if (count(array_unique($allvalues)) === 1 && end($allvalues) === 'true') {
echo "All the values are True!";
}else{
echo "At list one of tha values is false";
}
if (count(array_filter($valid)) == count($valid)) { echo 'All the values are Truthy'; } else { echo 'at least one of the values is falsey'; }
array_filter
, вероятно, медленнее, чем ответarray_unique
ниже.