加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php中如何根据字符串生成对应数组方法 - PHP教程

发布时间:2014-12-04 23:33:25 所属栏目:PHP教程 来源:站长网
导读:例如: ?php $config = array( 'project|page|index' = 'content', 'project|page|nav' = array( array( 'image' = '1.jpg', 'name' = 'home' ), array( 'image
例如:

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

本栏目更多精彩内容:http://www.bianceng.cn/webkf/PHP/

方法:使用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  
                )  
        )  
)

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读