2015-12-01 2 views
0

Сегодня, когда я читал документ, я видел где-то что-то похожее на это in_array('value1' || 'value2', $my_array), поэтому я попытался научиться. И это работает! Просто почему? Как это действительно работает за этим?in_array «или» оператор в параметрах

ответ

3
$array = array(2, 3, 4); 

var_dump('value1' || 'value2'); 
var_dump(in_array('value1' || 'value2', $array)); 

Его не так уж необычно.

'value1' || 'value2'true слабым равенством.

array(2, 3, 4) содержит значения, которые также являются true слабым равенством.

Таким образом, это доказывает, что in_array выполняет слабое сравнение. Спасибо, я должен это понять, так как я все время использую эту функцию.

В Javascript 'value1' || 'value2' вернет value1, потому что в этом контексте это «нулевой оператор коалесцирования».

РНР эквивалент 'value1' ?: 'value2' сравнить состояние с булевым или 'value1' ?? 'value2' для нулевого сливающихся в PHP 7. Я буду считать, что код был недоразумение языка, потому что он не выглядит полезным или даже иметь смысл ,

+0

so ''value1' || 'value2' 'всегда будет истинным, так как строка оценивается как true в булевом? – Andrew

+0

Поскольку они являются постоянными строками, да. Если бы они были пустыми строками, это вернуло бы «ложь». – Flosculus

+0

получил. благодаря! – Andrew

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