douhao2026 2013-10-09 03:49
浏览 23
已采纳

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

I have a function to convert a .json file to an array:

function jsonToArray($file) {
    $json = json_decode(file_get_contents($file), true);
    print_r($json); }

This yields an array like this:

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

To interface with existing code, I need these arrays with the fields and values split, like this:

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
            )

    )
)

The code I came up with works if this structure is maintained for all usage but as that can't be guaranteed I need another solution. I'm sure it's something relatively simple, I just can't crack it. Any hints or insight would be much appreciated.

  • 写回答

2条回答 默认 最新

  • doujumiao5024 2013-10-09 04:35
    关注

    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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改