我正在考虑阅读客户提交的POST数据的一个好习惯。
例如,如果我有一个应该具有以下结构的post变量:
array(
[0] => array(
['test'] => array(1, 2, 3),
['test2'] => "string"
),
[1] => array(
['test'] => array(),
['test2'] => "string2"
),
)
索引'test'和'test2'应始终存在但其值可能为空(array()和“”); 处理POST数据的函数需要正确的格式,因此我必须确保数据没有被操作。
我可以做以下事情:
$result = array();
if(isset($_POST['myVar']) && is_array($_POST['myVar'])) {
foreach($_POST['myVar'] as $array) {
$new = array('test' => array(), 'test2' = "");
if(isset($array['test']) && is_array($array['test'])) {
foreach($array['test'] as $expectedInt) {
$new['test'][] = (int)$expectedInt;
}
}
if(isset($array['test2']) && is_string($array['test2']))
$new['test2'] = $array['test2'];
}
$result[] = $new;
}
我想你明白了我的意思。我想知道是否有更好的方法将POST数据读入预期的格式。
答案 0 :(得分:1)
我通常这样做是为了确保我有默认索引:
$par = $_POST;
$par += [
'key' => 'default',
'other' => 'default',
]
如果$par
不包含这些键,则会设置它们。
在您的情况下,您可以这样做:
$ready = [];
foreach($_POST as $k => $v){
$v += [
'test' => [],
'test2' => "string2",
];
// Validate if needed
$v['test'] = (array)$v['test'];
$v['test2'] = (string)$v['test2'];
$ready[$k] = $v;
}
稍后您可以确定,$ready
将包含test
和test2
个键的值。
这在函数中非常有用,你可以用一个参数数组替换很多参数,然后再设置默认值,