• php 依据字符串生成相应数组方法


    php 依据字符串生成相应数组方法

    比如:

    <?php
    $config = array(
        'project|page|index' => 'content',
        'project|page|nav' => array(
                array(
                    'image' => '1.jpg',
                    'name' => 'home'
                ),
                array(
                    'image' => '2.jpg',
                    'name' => 'about'
                )
        ),
        'project|page|open' => true
    );
    ?>

    依据$config生成下面数组

    <?php
    $result = array(
        'project' => array(
            'page' => array(
                'index' => 'content',
                'nav' => array(
                        array(
                            'image' => '1.jpg',
                            'name' => 'home'
                        ),
                        array(
                            'image' => '2.jpg',
                            'name' => 'about'
                        )
                ),
                'open' => true
            )    
        )
    );
    ?

    >


    方法:使用eval实现

    <?php
    $config = array(
        'project|page|index' => 'content',
        'project|page|nav' => array(
                array(
                    'image' => '1.jpg',
                    'name' => 'home'
                ),
                array(
                    'image' => '2.jpg',
                    'name' => 'about'
                )
        ),
        'project|page|open' => true
    );
    
    $result = array();
    foreach($config as $key=>$val){
        
        $tmp = '';
        $keys = explode('|', $key);
        
        for($i=0,$len=count($keys); $i<$len; $i++){
            $tmp .= "['".$keys[$i]."']";
        }
        
        if(is_array($val)){
            eval('$result'.$tmp.'='.var_export($val,true).';');
        }elseif(is_string($val)){
            eval('$result'.$tmp.'='.$val.';');
        }else{
            eval('$result'.$tmp.'=$val;');
        }
    
    }
    
    print_r($result);
    
    ?

    >


    输出结果:

    Array
    (
        [project] => Array
            (
                [page] => Array
                    (
                        [index] => content
                        [nav] => Array
                            (
                                [0] => Array
                                    (
                                        [image] => 1.jpg
                                        [name] => home
                                    )
                                [1] => Array
                                    (
                                        [image] => 2.jpg
                                        [name] => about
                                    )
                            )
                        [open] => 1
                    )
            )
    )



  • 相关阅读:
    Swift的闭包(一):闭包简介、闭包表达式的优化
    iOS 用户体验之音频
    【iOS】Core Bluetooth
    【iOS】3D Touch
    golang中channel的超时处理
    Objective-C 中的 BOOL
    2015年总结
    load vs. initialize
    正则表达式
    When does layoutSubviews get called?
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5243544.html
Copyright © 2020-2023  润新知