我正在尝试检查用户提交的数据 from$_POST
是否至少具有与我传递的数组相同的元素。我这样做是因为稍后我将通过调用来使用这些元素,$_POST['element']
并且我不喜欢关于该元素不存在(未设置)的错误。:)
我不想使用类似的东西,isset($_POST['x'], $_POST['y'], $_POST['z'])
因为每次我都需要重写$_POST
,而且看起来也不可读。
我尝试使用in_array(array('x', 'y', 'z'), $_POST)
,但它不起作用(它false
应该返回时返回true
)。任何想法如何使它工作?:) 我确定我有空字符串作为$_POST['x']
,$_POST['y']
和$_POST['z']
. 我什至尝试将软管三个$_POST
元素的值更改为空字符串以外的其他值 - 仍然......没有按预期工作。:(
感谢您的建议!:)
编辑:
刚刚发现in_array()
检查值,而不是键。然后,我试着这样做......
in_array(array('title', 'slug', 'content'), array_keys($_POST))
尽管如此,它仍然返回false
。怎么会这样?;/
编辑#2:
好的,这是调试的结果...
进货$_POST
:
array(3) {
["title"]=>
string(0) ""
["slug"]=>
string(0) ""
["content"]=>
string(0) ""
}
结果array_keys($_POST)
:
array(3) {
[0]=>
string(5) "title"
[1]=>
string(4) "slug"
[2]=>
string(7) "content"
}
结果in_array(array('title', 'slug', 'content'), array_keys($_POST))
:
bool(false)
问题......为什么会这样false
?据我所知,我做的都是正确的。
编辑#3:
最后,我创建了自己的方法,称为Arr::keys_exists($keys, $array)
.