我有以下名为$fields
的数组:
array(3) {
[0]=>
string(9) "groupName"
[1]=>
string(9) " userName"
[2]=>
string(3) " id"
}
但是,当我运行此代码时:
if(in_array("groupName", $fields))
echo "yes - groupName";
if(in_array("id", $fields))
echo "yes - id";
输出:
是 - groupName
无法理解我在这里做错了什么
答案 0 :(得分:6)
在$fields
数组中,您有第三个值id
。 id
字符串的开头有一个空格。所以in_array("id", $fields)
失败了。它适用于:
in_array(" id", $fields)
您应该遍历$fields
数组并修剪其值。例如array_map
:
$fields = array_map(function($field){ return trim($field); }, $fields);
或:
$fields = array_map(trim, $fields);
array_walk($fields, function(&$field){ $field = trim($field); });
输出:
array (size=3)
0 => string 'groupName' (length=9)
1 => string 'userName' (length=8)
2 => string 'id' (length=2)
测试:
var_dump(in_array("id", $fields));
结果:
boolean true
答案 1 :(得分:3)
因为你在数组元素中有空格;
array(3) {
[0]=>
string(9) "groupName"
[1]=>
string(9) " userName"
[2]=>
string(3) " id"
}
更正后的代码:
array(3) {
[0]=>
string(9) "groupName"
[1]=>
string(9) "userName" // Remove space after "
[2]=>
string(3) "id" // Remove space after "
}
答案 2 :(得分:1)
你的数组值“id”中有一个空格,这就是为什么它与“id”不匹配 你应该使用trim(http://www.php.net/manual/en/function.trim.php),以便在插入/检查之前从字符串的结尾和开头删除空格。