2015-08-25 3 views
1

Есть ли короткий способ написать это? Как показано ниже:Сравните все значения массива с одной строкой - PHP

<?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 'Все значения Truthy'; } else {echo 'хотя бы одно из значений false'; } ' –

+0

' array_filter', вероятно, медленнее ответа 'array_unique' ниже. – twentylemon

+0

@mark использовать 'array_unique' и равный ему 1, сделает код намного быстрее и намного меньше кода используется вообще – Buddhi741

ответ

4
if(!in_array($false,$valid){ 
echo "All the values are True!"; 
}else{ 
echo "At list one of the values is False"; 
} 
+0

это лучший ответ еще – Buddhi741

+0

Согласованный, лучший метод, когда у вас есть только две возможности. +1 – rjdown

+0

Отличный ответ! Благодаря! – xepe

0

сво массив не является переменной вы не можете просто === это

вам придется использовать

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

не лучший подход, поскольку вы пропустите возможности сделать это более эффективно. , но это еще один подход к нему – Buddhi741

+0

@BuddhiAbeyratne - True. После моего сообщения, я вижу других anwnsers с in_array() и array_keys(), но мне нравится мой путь к нему. Всегда хорошо знать, как это сделать без специальных функций. – Matiboux

Смежные вопросы