Я наткнулся на этот код:

in_array(($_GET['some_value']??-1),[])

И у меня проблемы с пониманием. У меня следующие вопросы:

  1. Что в этом контексте означает оператор ??? Мой опыт подсказывает мне, что это похоже на слияние нуля, но я не уверен.
  2. Что делает in_array, если haystack - пустой массив? Опять же, похоже, что он всегда будет возвращать FALSE, но я новичок в PHP, поэтому мне нужно подтверждение по этому поводу.
php
0
Woody1193 20 Сен 2018 в 22:57

2 ответа

Лучший ответ

Двойной вопросительный знак - это фактически новый в PHP 7 оператор слияния null: http://php.net/manual/de/migration70.new-features. PHP

In_array () вернет false, если стог сена является пустым массивом, на самом деле он вернет только TRUE, если иголка найдена в стоге сена. Прочтите документацию здесь:

http://php.net/manual/de/function.in-array.php

1
Lars Stegelitz 20 Сен 2018 в 20:08

Это выражение можно заменить на

false

Вызов in_array с пустым массивом в качестве второго аргумента всегда будет возвращать false, поэтому не имеет значения, существует ли $_GET['some_value'], что он есть, если он существует, или заканчивается ли он заменяется отрицательным оператором объединения с нулевым значением.

Вы не можете найти ничего в пустом массиве. Вероятно, это либо ошибка, либо попытка обфускации.

3
Don't Panic 20 Сен 2018 в 20:13