0

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

    )
)

如果为所有使用维护此结构,则我提出的代码有效,但由于不能保证我需要另一个解决方案。我确定这是相对简单的东西,我就是无法破解它。任何提示或见解将不胜感激。

4

2 回答 2

1

try this code

    $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);
于 2013-10-09T04:35:09.327 回答
0

这可能对您有用:array_values()array_keys()以及一些foreach会起到神奇的作用。

于 2013-10-09T03:58:34.410 回答