【发布时间】:2018-01-13 23:15:57
【问题描述】:
我有一个简单的in_array(),下面有一个数组作为针示例,但是我希望我的示例应该回显;
在数组中找到匹配项
鉴于这两种针都存在于大海捞针中。但是,此代码不会产生回声。我希望有人能帮助我理解为什么我在这里没有比赛。
<?php
$needle = array('fjord', 'troz');
$haystack = array('troz', 'zort', 'fran', 'fjord');
if (in_array($needle, $haystack))
{
echo "match found in the array";
}
?>
我已阅读 http://php.net/manual/en/function.in-array.php,但不确定为什么我没有得到匹配。
【问题讨论】:
-
因为 needle 是一个数组
in_array()正在寻找一个数组。 -
你会匹配这个干草堆:
array(array('foo', 'bar'), array('fjord', 'troz'));当 needle 是一个数组时,如果 needle 中的所有元素也存在于干草堆中,这并不意味着它是匹配的。这意味着如果 haystack 包含一个与 needle 具有完全相同的元素(不多也不少)的 array,则认为它是匹配的。 -
你能解释一下为什么吗? 更新 我刚刚用
array(array('foo', 'bar'), array('fjord', 'troz'));运行但仍然没有匹配。 -
@Jamie 在该示例中,干草堆是一个嵌套数组,其中一个嵌套数组是其中一个示例中的针,因此返回
true。 -
@Jamie,如果不匹配,你就搞错了。查看手册页上的示例 #3。