Php in#u array()不';如果使用explode()创建数组,则无法再按预期工作
首先,我将字符串更改为数组。当我尝试在该数组中搜索时,无法搜索第二个数组值。下面是我的代码Php in#u array()不';如果使用explode()创建数组,则无法再按预期工作,php,arrays,string,explode,Php,Arrays,String,Explode,首先,我将字符串更改为数组。当我尝试在该数组中搜索时,无法搜索第二个数组值。下面是我的代码 //my string $a = 'normal, admin'; //Change string to array $arr = explode(",",$a); // Search by array value dd(in_array("admin", $arr)); //got false 但是,当我尝试搜索以下内容时,它是有效的 //my string $a = 'normal, admin';
//my string
$a = 'normal, admin';
//Change string to array
$arr = explode(",",$a);
// Search by array value
dd(in_array("admin", $arr)); //got false
但是,当我尝试搜索以下内容时,它是有效的
//my string
$a = 'normal, admin';
//Change string to array
$arr = explode(",",$a);
// Search by array value
dd(in_array("normal", $arr)); //got true
这是因为值
admin
与explode()
之间有一个前导空格!
如果执行以下操作,您可以看到:
var_dump($arr);
输出:
array(2) {
[0]=>
string(6) "normal"
[1]=>
string(6) " admin"
//^ ^ See here
}
现在要解决此问题,只需将组合应用于每个数组值,如下所示:
$arr = array_map("trim", $arr);
$arr = array('normal',' admin');
您有一个字符串数组,如下所示: 您可以选择以下字符串:
$a = 'normal, admin';
使用explode后,将出现以下任何阵列:
$arr = array_map("trim", $arr);
$arr = array('normal',' admin');
我的意思是说你在admin中有一个空格,这就是为什么不在数组中搜索admin的原因
解决方案:在使用分解之前,请使用此功能:
$newstr = str_replace(" ", "", $a);
$arr = explode(',',$newstr);
是的,第一个将不起作用,因为您可以看到,在
管理员
之前有一个额外的空间将不起作用。在检查结果之前,需要使用修剪
和数组映射
功能
$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)
$arr=array_amp(“trim”,$arr)代码>是$arr=array\u map(“trim”,$arr)代码>?这是工作。Thanks@SetKyarWaLar您可以接受其中一个答案,这将使此答案被视为已解决。谢谢。