繁体   English   中英

在PHP的多维数组中为键数组使用变量

[英]Use A Variable for an Array of Keys in Multidimentional Arrays in PHP

我有一个数组$ json_data,我正在尝试使用for循环进行解析:

这是数组:

array(2) {
    ["data"]=>
    array(4) {
        ["children"]=>
        array(25) {
            [0]=>
            ["first_key"]=>
            array(50) {
                ["second_key"]=> 
                string(9) "My Title"
            }
        }
    }
}

然后在PHP中,将其设置为$ json_data并开始使用for循环提取数据

foreach  ( $json_data['data']['children'] as $key => $value ) {
    echo $title = $value['first_key']['second_key'];
}

按预期输出“我的标题”。

我的问题(如果我的问题措辞不好,请告知)是,我可以将键设置为变量吗? 我知道我不能将其设置为字符串,但是可以将键数组传递给$ value,例如:

$key_array = array('first_key' => array('second_key'));

foreach  ( $json_data['data']['children'] as $key => $value ) {
    echo $title = $value[$key_array];
}

或类似的东西?

制作一个可以将$ array传递给设置了$ key_array的函数的函数也很棒,例如:

回声get_array_value($ array,$ array_keys);

但希望朝正确的方向前进。

首先,请看这里:

$key_array = array('first_key' => array('second_key'));

声明一个简单的数组,该数组包含要从原始数组$json_data获取其值的所有键,而不是声明键的多维数组,如下所示:

$array_keys = array('second_key', 'another_key');

其次,根据您的问题:

制作一个可以将$array传递给设置了$key_array的函数的函数也很棒,例如:

 echo get_array_value( $array, $array_keys ); 

是的,这肯定是可能的。 解决方案是:

  • 编写一个函数get_array_value() ,并将原始数组$json_data和键数组$array_keys传递给该函数。
  • get_array_value()函数内创建一个foreach循环,该循环将遍历$array_keys数组。 在循环的每次迭代中,调用另一个递归实用程序函数get_array_value_utility()
  • get_array_value_utility()函数将递归遍历数组,并从数组中获取所需的值。

这是代码

function get_array_value_utility($array, $key){
    foreach($array as $k => $v){
        if($key == $k){
            return $v;
        }else if(is_array($v)){
            $v = get_array_value_utility($v, $key);
            if ($v != null) return $v; 
        }
    }
}

function get_array_value($array, $array_keys){
    $values = array();
    foreach($array_keys as $key){
        $values[] = get_array_value_utility($array, $key);
    }
    return $values;
}

$array_keys = array('second_key', 'another_key');
$values = get_array_value($json_data, $array_keys);

// display $values array
var_dump($values);  

这是现场演示 (摘自@Evanrose的评论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM