Сравните все значения массива в одной строке - PHP

1

Есть ли короткий способ написать это? Как показано ниже:

<?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";
    }

    ?>

Я попытался написать его, как показано в первом примере, но он не работает

  • 0
    if (count(array_filter($valid)) == count($valid)) { echo 'All the values are Truthy'; } else { echo 'at least one of the values is falsey'; }
  • 0
    array_filter , вероятно, медленнее, чем ответ array_unique ниже.
Показать ещё 2 комментария
Теги:
string
arrays
compare

4 ответа

4
Лучший ответ
if(!in_array($false,$valid){
echo "All the values are True!";
}else{
echo "At list one of the values is False";
}
  • 0
    это лучший ответ из всех
  • 0
    Согласен, лучший метод, когда у вас есть только две возможности. +1
Показать ещё 1 комментарий
1

Вы можете использовать второй параметр 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";
}
0

Вы можете сделать это с помощью этого:

$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";
}
  • 0
    не лучший подход, учитывая, что вы упускаете возможности сделать это более эффективно. но это еще один подход к этому
  • 0
    @BuddhiAbeyratne - правда. После моего поста я вижу другие awnsers с in_array () и array_keys (), но мне нравится мой путь к нему. Всегда полезно знать, как это сделать без специальных функций.
0

его массив не переменная, которую вы не можете просто === 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";
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню