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
                    )
            )
    )



  • 相关阅读:
    iframe跨域
    jquery 中的 $(“#”) 与 js中的document.getElementById(“”) 的区别
    jQuery中this与$(this)的区别
    div层调整zindex属性无效原因分析及解决方法
    The local variable......been initialized
    equals方法的重写
    eclipse快捷键
    JAVA中几个常用的方法
    Java基础4(方法基础和一维数组)
    Java基础3笔记
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5243544.html
Copyright © 2011-2022 走看看