我有一个将.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
)
)
)
如果为所有用途维护此结构,我提出的代码可行,但由于无法保证,我需要另一种解决方案。我敢肯定这是相对简单的事情,我无法破解它。任何提示或见解都会非常感激。
答案 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 会带来魔力。