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

时间:2013-10-09 03:49:36

标签: php arrays

我有一个将.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
            )

    )
)

如果为所有用途维护此结构,我提出的代码可行,但由于无法保证,我需要另一种解决方案。我敢肯定这是相对简单的事情,我无法破解它。任何提示或见解都会非常感激。

2 个答案:

答案 0 :(得分:1)

试试这段代码

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

答案 1 :(得分:0)

这可能对您有用:array_values()array_keys()以及 foreach 会带来魔力。