【发布时间】:2011-10-08 16:37:51
【问题描述】:
我正在尝试检查来自$_POST 的用户提交的数据是否至少具有与我传递的数组相同的元素。我这样做是因为稍后我将通过调用$_POST['element'] 来使用这些元素,而且我不喜欢关于该元素不存在(未设置)的错误。 :)
我不想使用像isset($_POST['x'], $_POST['y'], $_POST['z']) 这样的东西,因为每次我都需要重写$_POST,而且它似乎也无法阅读。
我尝试使用in_array(array('x', 'y', 'z'), $_POST),但它不起作用(它在应该返回true 时返回false)。任何想法如何使它工作? :) 我确定我有空字符串$_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)。
【问题讨论】:
-
您是否尝试过 print_r($_POST) ?
-
调试结果参见“Edit #2”。
-
in_array 一次只能测试一个值 in_array('title', $array_keys) 会起作用。查看我的更新答案。