我有一个数组,它是通过如下方式分解字符串而形成的。
$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
删除字符串中的空白。有人能解释一下问题是什么吗?
如果仔细查看var_dump()
的输出,可以看到字符串Cardiology
在开头有一个空格:
string(11) " Cardiology"
^
这导致in_array()
没有将其检测为匹配值。要删除空间,可以在执行in_array()
检查之前使用array_map()
在所有数组元素上应用trim
:
$interest_array = explode(',', $user->interests);
$interest_array = array_map('trim', $interest_array);