PHP - 阅读 POST 变量的好习惯

标签 php

我正在考虑读取客户端提交的 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 数据读取为预期格式。

最佳答案

我通常这样做是为了确保我有默认索引:

$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 将包含带有 testtest2 键的值。

这在函数中非常有用,你可以用一个参数数组替换很多参数,然后设置默认值,

关于PHP - 阅读 POST 变量的好习惯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16524597/

相关文章:

php - 使用数组放入where条件MySQL查询

php - 元素列表错误后缺少 ]

php - SQL 数组语句

php - 仅当用户使用 Laravel 处于事件状态时登录

php - MySql 查询限制显示少一个元素

php - 使用 PHP 显示 Mysql 数据给我一个空白页面

php - PHP 中 if isset 为空和 if 不为空?

php - 如何在 PHP 中通过 PDO 循环遍历 MySQL 查询?

php - mysql 使用共享列条目连接两行

php - 请问laravel数据库事务锁表吗?