in_array在数组中找不到值

时间:2014-04-13 09:34:17

标签: php arrays output

我有一个通过爆炸字符串形成的数组,如下所示。

$interest_array = explode(',', $user->interests);

当我var_dump这个数组时,我得到了

array(3) { 
    [0]=> string(19) "Acute critical care" 
    [1]=> string(11) " Cardiology" 
    [2]=> string(20) " Computed Tomography"
}

使用以下代码

if (in_array('Acute critical care', $interest_array)) {
        echo "selected";}

我输出....已选中。 现在没关系,但是我需要这个来处理几个数组值。例如,使用以下代码

if (in_array('Acute critical care', $interest_array)) {
    echo "selected_once";
}

if (in_array('Cardiology', $interest_array)) {
    echo "selected_twice";
}

我只获得selected once的一个输出,但我希望输出selected once 两次

为什么会这样。我已经看到很多人在使用in_array时遇到了类似的问题,但我找不到任何解决方案(大多数问题都略有不同。我试过翻转数组并使用array_key_exists没有运气。我也有尝试preg_replace删除字符串中的空格而没有运气。有人可以解释问题是什么吗?

1 个答案:

答案 0 :(得分:4)

如果仔细查看var_dump()输出,可以看到字符串Cardiology在开头有空格:

string(11) " Cardiology"
            ^

这导致in_array()未将其检测为匹配值。要删除空格,您可以在执行trim检查之前使用array_map()对所有数组元素应用in_array()

$interest_array = explode(',', $user->interests);
$interest_array = array_map('trim', $interest_array);