我正在尝试做这样的事情:
$fetch = array('a', 'b', 'c', 'd', 'e');
$input = array('a', 'c', 'e');
if (in_array($input, $fetch)) {
echo "Array Values Exists";
}
else {
echo 'Invalid Values Exists';
}
基本上,我试图查看$input
数组中$fetch
数组中的值是否存在。但上述结果始终显示为Invalid Values Exists
,而不是显示Array Values Exists
。当我从示例#3中读取in_array()
文档here时,我想我可以在数组中使用数组作为参数。我明白这个错了吗?这样做的正确方法是什么?
答案 0 :(得分:2)
$needle
可以是一个数组,但这意味着您正在寻找数组,而不是数组中的元素。
$a = array(array('p', 'h'), array('p', 'r'), 'o');
if (in_array(array('p', 'h'), $a)) {
//Note that array('p', 'h') is in the $haystack array, but not 'p' or 'h' alone.
echo "'ph' was found\n";
}
如果你想检查数组的元素,你需要以某种方式迭代它(无论是foreach
还是array_map()
)。
答案 1 :(得分:1)
怎么样
$fetch = array('a', 'b', 'c', 'd', 'e');
$input = array('a', 'b', 'c');
$flag = true;
foreach($input as $key=>$val){
if (!in_array($val, $fetch)) {
$flag = false;
break;
}
}
if($flag=== true)
echo "Values in input exists in fetch";
else
echo "Values in input does not exists in fetch";
答案 2 :(得分:0)
您不能将$ input用作数组。
见下面的例子:
<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');
if (in_array(array('p', 'h'), $a)) {
echo "'ph' was found\n";
}
if (in_array(array('f', 'i'), $a)) {
echo "'fi' was found\n";
}
if (in_array('o', $a)) {
echo "'o' was found\n";
}
&GT;
以上示例将输出:
找到了'ph' 'o'被发现