Php 将键从值拆分到另一个数组中

Php 将键从值拆分到另一个数组中,php,arrays,Php,Arrays,我有一个将.json文件转换为数组的函数: function jsonToArray($file) { $json = json_decode(file_get_contents($file), true); print_r($json); } 这将产生如下数组: Array ( [field1] => value1 [field2] => Array ( [subfield1] => subvalue1 [subfie

我有一个将
.json
文件转换为数组的函数:

function jsonToArray($file) {
    $json = json_decode(file_get_contents($file), true);
    print_r($json); }
这将产生如下数组:

Array (
[field1] => value1
[field2] => Array
    (
        [subfield1] => subvalue1
        [subfield2] => subvalue2
        [subfield3] => subvalue3
    )
)
Array (
[0] => Array
    (
        [0] => field1
        [1] => Array
            (
                [0] => subfield1
                [1] => subfield2
                [2] => subfield3
            )

    )

[1] => Array
    (
        [0] => value1
        [1] => Array
            (
                [0] => subvalue1
                [1] => subvalue2
                [2] => subvalue3
            )

    )
)
为了与现有代码接口,我需要这些字段和值拆分的数组,如下所示:

Array (
[field1] => value1
[field2] => Array
    (
        [subfield1] => subvalue1
        [subfield2] => subvalue2
        [subfield3] => subvalue3
    )
)
Array (
[0] => Array
    (
        [0] => field1
        [1] => Array
            (
                [0] => subfield1
                [1] => subfield2
                [2] => subfield3
            )

    )

[1] => Array
    (
        [0] => value1
        [1] => Array
            (
                [0] => subvalue1
                [1] => subvalue2
                [2] => subvalue3
            )

    )
)

如果这个结构在所有情况下都得到维护,那么我提出的代码就可以工作,但由于这不能保证,我需要另一个解决方案。我确信这是一件相对简单的事情,我就是无法破解。任何提示或见解都将不胜感激。

这可能对您有用:这一点和一点foreach将起到神奇的作用。

试试这段代码

    $arr = array ('field1' => 'value1',
        'field2' => array(
            'subfield1' => 'subvalue1',
            'subfield2' => 'subvalue2',
            'subfield3' => 'subvalue3'));

function array_values_recursive($ary)  {
    $lst = array();
    foreach( $ary as $k => $v ) {
        if (is_scalar($v)) {
            $lst[] = $v;
        } elseif (is_array($v)) {
            $lst[] = array_values_recursive($v);
        }
    }
    return array_values($lst);
 }

 function array_keys_recursive($ary)  {
    $lst = array();
    foreach( $ary as $k => $v ) {
        if (is_scalar($v)) {
            $lst[] = ($k);
        } elseif (is_array($v)) {
            $lst[] = array_keys_recursive($v);
        }
    }
    return $lst;
}
echo '<pre>';
$arr1 = array();
$arr1[] = array_values_recursive($arr);
$arr1[] = array_keys_recursive($arr);
print_r($arr1);
$arr=array('field1'=>'value1',
“field2”=>数组(
'子字段1'=>'子值1',
'subfield2'=>'subvalue2',
‘subfield3’=>‘subvalue3’);
函数数组\值\递归($ary){
$lst=array();
外汇($k=>v美元){
if(是_标量($v)){
$lst[]=$v;
}elseif(is_数组($v)){
$lst[]=数组值递归($v);
}
}
返回数组_值($lst);
}
函数数组\u键\u递归($ary){
$lst=array();
外汇($k=>v美元){
if(是_标量($v)){
$lst[]=($k);
}elseif(is_数组($v)){
$lst[]=array_keys_recursive($v);
}
}
返回$lst;
}
回声';
$arr1=数组();
$arr1[]=数组\u值\u递归($arr);
$arr1[]=数组\u键\u递归($arr);
印刷费($arr1);