我有一个通过爆炸字符串形成的数组,如下所示。
$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
删除字符串中的空格而没有运气。有人可以解释问题是什么吗?
答案 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);