数组中的PHP无法正常工作

时间:2013-03-16 07:11:16

标签: php arrays function

这是我的代码

$arr = array('id', 'string');
    // check keys do not contain id or string
    if(in_array($arr, $keys) == true) {
        return false;
    } else {
        var_dump($keys);
        var_dump($arr);
    }
            return true;

来自函数的回复;

array (size=2)
  0 => string 'mohooho' (length=14)
  1 => string 'string' (length=6)
array (size=2)
  0 => string 'id' (length=2)
  1 => string 'string' (length=6)
boolean true
我生气了吗?还是我累了?这到底是怎么回事?

修改

好的,在我的机器上我有这个,我可以发誓我的母亲的生活,我正在使用wamp php 5.4

// check keys do not contain id or string
    if(in_array(array('string', 'id'), array('string', 'id'))) {
        echo 'IN ARRAY';
    } else {
        echo 'ERROR!';
    }

http://writecodeonline.com/php/<<<< 在此处测试代码

我得到ERROR!

但这很有效,

// check keys do not contain id or string
    if(in_array('string', array('string', 'id'))) {
        echo 'IN ARRAY';
    } else {
        echo 'ERROR!';
    }

我现在得到了正确的回复IN_ARRAY

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我可以想到为什么会返回ERROR

if (in_array(array('string', 'id'), array('string', 'id')))
{
    echo 'IN ARRAY';
}
else
{
    echo 'ERROR!';
}

是因为PHP正在针对针本身检查每个haystack的值。假设您有2个这样的数组:

$a = array('string', 'id');
$b = array('string', 'id');

$a$b是一样的吗?如果您将这些内容提供给in_array$a是针,而$b是大海捞针,则检查$b[0]是否等于$a?假。但是如果你像这样制作数组并做in_array($a, $b)

$a = array('string', 'id');
$b = array(array('string', 'id'), 'id');

它将返回true,因为$b[0]等于$a本身或干草堆中发生$a的地方$b