zoukankan      html  css  js  c++  java
  • 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
                    )
            )
    )



  • 相关阅读:
    单片机中的类型转换
    vs2013CCyusb报错(CyAPI.obj)
    c/c++ 去掉空格函数
    keil关于正点原子的sys.h工程报错修改
    【C语言】华软C语言程序设计复习
    c/c++中,clock函数的用法和作用
    vs mfc出现错误“MSB8301”解决办法
    vs出现“未将对象引用到实例的错误”
    keil uv5 代码格式化
    嵌入式软件面试
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5243544.html
Copyright © 2011-2022 走看看