PHP获得任意级别的JSON

时间:2018-01-10 07:26:46

标签: php json loops

我正在尝试为任意深度的JSON数组编写CRUD。

在我使用它之前 - 哪个有效 -

get('pages','home','title');    

function get()
{
    $numArgs = func_num_args();
    $args    = func_get_args();
    switch ( $numArgs ) {
        case 1:
            $get = $GLOBALS['db'][$args[0]];
            break;
        case 2:
            $get = $GLOBALS['db'][$args[0]][$args[1]];
            break;
        case 3:
            $get = $GLOBALS['db'][$args[0]][$args[1]][$args[2]];
            break;
       // ETC
   }
   return $get;
}

但我真的不喜欢那样......而且我希望能够处理任何数组级别的更简单,更清晰,更强大的东西。

非常感谢任何想法

1 个答案:

答案 0 :(得分:0)

为参数创建一个foreach,只需使用foreach中每个步骤的数据更新变量。

function get()
{
    $numArgs = func_num_args();
    $args    = func_get_args();

    $db = $GLOBALS['db'];

    foreach($args as $arg){
        $db = $db[$arg];     
    }

    return $db;

}

工作示例

<?php
    // dummy data
    $GLOBALS['db'] = [
        'pages' => [
            'home' => [
                'title' => 'Hello world',
                'content' => [
                    'text' => 'hello',
                    'title' => 'Rock'
                ]
            ]
        ]
    ];

    echo "<pre>";
    // returns the title
    var_dump(get('pages','home','title')); 

    // return the content text ( example with more keys in array )
    var_dump(get('pages','home','content','text'));

    // returns the content array
    var_dump(get('pages','home','content'));

    echo "</pre>";


    function get()
    {
        $numArgs = func_num_args();
        $args    = func_get_args();

        $db = $GLOBALS['db'];

        foreach($args as $arg){
            $db = $db[$arg];     
        }

        return $db;

    }