php实现根据字符串生成对应数组的方法

5年以前  |  阅读数:1164 次  |  编程语言: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
)
)
)

希望本文所述对大家PHP程序设计的学习有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
贪吃蛇
文件下载
获取IMEI
双位运算符
发送邮件
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
提取后缀名
年的日历图
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例