首先,我将我的字符串更改为数组。当我尝试在该数组内搜索时,无法搜索第二个数组值。以下是我的代码。
el.attr("disabled", "true");
el.removeAttr("disabled");
但是当我尝试搜索类似下面的内容时,它会起作用。
//my string
$a = 'normal, admin';
//Change string to array
$arr = explode(",",$a);
// Search by array value
dd(in_array("admin", $arr)); //got false
答案 0 :(得分:4)
这是因为值admin
具有explode()
的前导空格!
如果你这样做,你可以看到:
var_dump($arr);
输出:
array(2) {
[0]=>
string(6) "normal"
[1]=>
string(6) " admin"
//^ ^ See here
}
要解决此问题,只需将trim()
与array_map()
结合使用到每个数组值,如下所示:
$arr = array_map("trim", $arr);
答案 1 :(得分:2)
是的,第一个无法正常工作,因为您可以看到admin
之前需要使用trim
和array_map
之前的额外空格{1}}检查结果前的功能
$a = 'normal, admin';
//Change string to array
$arr = array_map('trim',explode(",",$a));
// Search by array value
var_dump($arr);
var_dump(in_array("admin", $arr));
输出:
array(2) { [0]=> string(6) "normal" [1]=> string(5) "admin" } bool(true)
答案 2 :(得分:1)
你有一个像这样的字符串数组: 你字符串:
$a = 'normal, admin';
使用爆炸后会出现这样的阵列:
$arr = array('normal',' admin');
我的意思是说您在管理员中有一个空格,这就是为什么不在in_array
函数中搜索管理员。
解决方案:在使用爆炸之前使用此功能:
$newstr = str_replace(" ", "", $a);
$arr = explode(',',$newstr);