in_array的奇怪用法

时间:2018-09-20 19:57:35

标签: php

我偶然发现了以下代码:

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

我在理解它时遇到了一些麻烦。我的问题如下:

  1. 在这种情况下,??运算符是什么意思?我的经验告诉我,这类似于空合并,但我不确定。
  2. 如果in_array是一个空数组,haystack会做什么?同样,似乎它总是返回FALSE,但是我是PHP新手,所以我想对此进行确认。

2 个答案:

答案 0 :(得分:3)

该表达式可以替换为

false

使用空数组作为第二个参数调用in_array总是返回false,因此$_GET['some_value']是否存在,它是否存在,或最终它会被空合并运算符替换为负数。

在空数组中找不到任何内容。可能是错误或者是混淆的尝试。

答案 1 :(得分:1)

实际上,双重问号是null合并运算符,是PHP 7中的新增功能: http://php.net/manual/de/migration70.new-features.php

如果干草堆是一个空数组,

in_array()将返回false,实际上,如果在干草堆中找到了针,它只会返回TRUE。在此处阅读文档:

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