Php 将数组按特定格式推入数组

Php 将数组按特定格式推入数组,php,arrays,push,Php,Arrays,Push,我有一个名为$params的数组结构 Array ( [PLANT_RA] => Array ( [0] => Array ( [SIGN] => I [OPTION] => EQ [LOW] => 6104 [HIGH] =&g

我有一个名为$params的数组结构

Array
(
    [PLANT_RA] => Array
        (
            [0] => Array
                (
                    [SIGN] => I
                    [OPTION] => EQ
                    [LOW] => 6104
                    [HIGH] => 
                )
        )

    [STGE_LOC_RA] => Array
        (
            [0] => Array
                (
                    [SIGN] => I
                    [OPTION] => EQ
                    [LOW] => 5700
                    [HIGH] => 
                )
        )

    [BATCH_RA] => Array
        (
            [0] => Array
                (
                    [SIGN] => I
                    [OPTION] => NE
                    [LOW] => 
                    [HIGH] => 
                )
        )
)
这是创建的:

$parms2 = array(
    'PLANT_RA' => array(array(
        'SIGN' => "I",
        'OPTION' => getOption($_GET['PLANT_RA-low'], $_GET['PLANT_RA-high']),
        'LOW' => $_GET['PLANT_RA-low'],
        'HIGH' => $_GET['PLANT_RA-high']
    )),

    'STGE_LOC_RA' => array(array(
        'SIGN' => "I",
        'OPTION' => getOption($_GET['STGE_LOC_RA-low'], $_GET['STGE_LOC_RA-high']),
        'LOW' => $_GET['STGE_LOC_RA-low'],
        'HIGH' => $_GET['STGE_LOC_RA-high']
    )),

    'BATCH_RA' => array(array(
        'SIGN' => "I",
        'OPTION' => getOption($_GET['BATCH_RA-low'], $_GET['BATCH_RA-high']),
        'LOW' => $_GET['BATCH_RA-low'],
        'HIGH' => $_GET['BATCH_RA-high']
    ))
)
但是,现在出于我的目的,我需要更改它并通过array_push()使用它, 所以我可以声明空数组:

$parms2 = array();
现在当我把它推进去时:

if (isset($_GET['PLANT_RA-low'])) {
    $storage_array = array('PLANT_RA' => array(
        'SIGN' => "I",
        'OPTION' => getOption($_GET['PLANT_RA-low'], $_GET['PLANT_RA-high']),
        'LOW' => $_GET['PLANT_RA-low'],
        'HIGH' => $_GET['PLANT_RA-high']
    ));
    array_push($parms, $storage_array);
}
if (isset($_GET['STGE_LOC_RA-low'])) {
    $storage_array = array('STGE_LOC_RA' => array(
        'SIGN' => "I",
        'OPTION' => getOption($_GET['STGE_LOC_RA-low'], $_GET['STGE_LOC_RA-high']),
        'LOW' => $_GET['STGE_LOC_RA-low'],
        'HIGH' => $_GET['STGE_LOC_RA-high']
    ));
    array_push($parms, $storage_array);
}
if (isset($_GET['BATCH_RA-low'])) {
    $batch_array = array('BATCH_RA' => array(
        'SIGN' => "I",
        'OPTION' => getOption($_GET['BATCH_RA-low'], $_GET['BATCH_RA-high']),
        'LOW' => $_GET['BATCH_RA-low'],
        'HIGH' => $_GET['BATCH_RA-high']
    ));
    array_push($parms, $batch_array);
}
则其格式不正确,被SAPNWRFC拒绝:

Array
(
    [0] => Array
        (
            [PLANT_RA] => Array
                (
                    [SIGN] => I
                    [OPTION] => EQ
                    [LOW] => 6104
                    [HIGH] => 
                )
        )

    [1] => Array
        (
            [STGE_LOC_RA] => Array
                (
                    [SIGN] => I
                    [OPTION] => EQ
                    [LOW] => 5700
                    [HIGH] => 
                )
        )

    [2] => Array
        (
            [BATCH_RA] => Array
                (
                    [SIGN] => I
                    [OPTION] => NE
                    [LOW] => 
                    [HIGH] => 
                )
        )
)

您能指导我如何推送(以何种格式)以便在最后获得与$params数组完全相同的输出吗?

最后,所有这些代码可以简化为:

$parms = [];
$keys = ['PLANT_RA', 'STGE_LOC_RA', 'BATCH_RA'];
foreach ($keys as $key) {
    if (isset($_GET[$key . '-low'])) {
        $parms[$key] = [
            [
                'SIGN' => "I",
                'OPTION' => getOption($_GET[$key . '-low'], $_GET[$key . '-high']),
                'LOW' => $_GET[$key . '-low'],
                'HIGH' => $_GET[$key . '-high']
            ]
        ];
    }
}

你可能想要的不是数组推送。为什么首先要数组推送?您知道要在下面创建新数组项的键-那么,直接分配它们吗<代码>$parms2['PLANT\u RA']=…