in_array() - 数组搜索中的数组不起作用

时间:2014-01-10 19:11:35

标签: php arrays

我正在尝试做这样的事情:

$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时,我想我可以在数组中使用数组作为参数。我明白这个错了吗?这样做的正确方法是什么?

3 个答案:

答案 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'被发现