数组动态键值

php获取数组的值,是这样的方式

$key = 'test';

$val = $arr[$key];

如果是多维深度数组结构,如何根据键获取数组的值?

step1

要构造出结构

step2

使用php特殊执行函数eval

项目代码示例:

$arr = array(
    'CITIZENSHIP' => '05',
    'ADDRESS' => array(
        '3' => array(
            'province' => '110000',
            'city' => '110100',
            'district' => '110101'
        )
    )
);
$arr_tpl = array('CITIZENSHIP', 'ADDRESS_3_province', 'ADDRESS_3_city');
$arr_new = array();
foreach ($arr_tpl as $key => $val) {
    $arr_id = explode('_', $val);
    $str_arr_key = '';
    foreach ($arr_id as $in_key => $in_val) {
        $str_arr_key .= "[{$in_val}]";
    }
    $form_key = "\$arr$str_arr_key";
    $new_key = "\$arr_new$str_arr_key";
    eval("\$arr_v = $form_key;");
    if (!empty($arr_v)) {
        eval("$new_key = \$arr_v;");
    }
}

 输出结果:

Array
(
    [CITIZENSHIP] => 05
    [ADDRESS] => Array
        (
            [3] => Array
                (
                    [province] => 110000
                    [city] => 110100
                )

        )

)

猜你喜欢

转载自zxbsearch.iteye.com/blog/2216082