Можно ли передать логическую иглу в in_array? - PullRequest
4 голосов
/ 25 июля 2011

Могу ли я передать false как иглу in_array()?

if(in_array(false,$haystack_array)){
    return '!';
}else{
    return 'C';
}

$haystack_array будет содержать только логические значения. Стог сена представляет результаты нескольких запросов записи. Я пытаюсь выяснить, вернул ли кто-нибудь из них ложь, и поэтому не завершен.

Ответы [ 4 ]

9 голосов
/ 25 июля 2011

PHP не будет заботиться о том, что вы передаете как «иглу», но вам, вероятно, следует также использовать третий (необязательный) параметр для in_array, чтобы сделать его «строгим» сравнением. «false» в PHP будет проверяться как равное 0, '', "", null и т. д.

0 голосов
/ 25 июля 2011

Да, вы можете, но почему бы вам не сделать это с одной булевой переменной, например:

$anyFalseResults = false;
... your query loop {
    // do the query
    if( $queryResult == false ) $anyFalseResults = true;
}

в конце цикла $ anyFalseResults будет содержать то, что вы ищете.

0 голосов
/ 25 июля 2011

Там должно быть лучше .

<?php
    echo (in_array(false,array(true,true,true,false)) ? '!' : 'C');
    echo (in_array(false,array(true,true,true,true)) ? '!' : 'C');

Output:
   !C
0 голосов
/ 25 июля 2011

Да, так же, как в вашем примере кода.Поскольку in_array возвращает логическое значение, указывающее, был ли поиск успешным (вместо того, чтобы возвращать совпадение), это не вызовет никаких проблем.

...