PHP - 阅读POST变量的好习惯

I am thinking of a good practice to read the client submitted POST data.

For example if I have a post variable that should have the following structure:

array(
    [0] => array(
      ['test'] => array(1, 2, 3),
      ['test2'] => "string"
    ),
    [1] => array(
        ['test'] => array(),
        ['test2'] => "string2"
    ),
)

Where the indices 'test' and 'test2' should always be present but their values may be empty (array() and ""); The functions that handle the POST data are expecting the correct format, so I have to make sure that the data has not been manipulated.

I could do the following:

$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;
}

I think you get the idea what I mean. I wonder if there is a better practice of reading the POST data into the expected format.

I usually do this to assure I have default indices:

$par = $_POST;
$par += [
   'key' => 'default',
   'other' => 'default',
]

If $par doesn't contain those keys, they are set.

In your case, your could do this:

$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;
}

Later you can be sure, that $ready will contain values with test and test2 keys.

This is very useful in functions, where you replace a lot of arguments with one parameter array, and then later set default values,