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 依据字符串生成相应数组方法的更多相关文章

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

    先看看如下示例: <?php $config = array( 'project|page|index' => 'content', 'project|page|nav' => ar ...

  2. laravel 将数组转化成字符串 再把字符串转化成数组

    这是在给阮少翔改代码的时候用的方法, 开始的数据用explored转化成数组不是想要的结果, 我就自己写了一个方法把有用的信息提取出来拼接成一个字符串, 再用explored将字符串转化成数组.   ...

  3. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  4. 字符串、数组方法实战--charAt(),split(),indexOf(),substring()

    这篇随笔根据两个面试题来实战一下数组.字符串的一些方法. 题一:一个字符串中找出出现次数最多的字符次数 var str = 'fuuhuhuhufaihuhfnkjNKCNIO';
 function ...

  5. JS解析json数据并将json字符串转化为数组的实现方法

    json数据在ajax实现异步交互时起到了很重要的作用,他可以返回请求的数据,然后利用客户端的js进行解析,这一点体现出js的强大,本文介绍JS解析json数据并将json字符串转化为数组的实现方法, ...

  6. JavaScript 数组方法处理字符串 prototype

    js中数组有许多方法,如join.map,reverse.字符串没有这些方法,可以“借用”数组的方法来处理字符串. <!doctype html> <html lang=" ...

  7. 数组快速生成range的方法

    //生成[item1-item9]数组 Array(9).join(0).split('').map((item,index) => 'item' + (index+1)) //生成20个对象的 ...

  8. ES5新增数组方法测试和字符串常见API测试

    首先是ES5新增数组方法测试: <!DOCTYPE html><html lang="en"><head> <meta charset=& ...

  9. JS 操作符、控制流程、循环、字符串/数组方法

    操作符 算术运算符:+ .- . * . / . %.++.-- 赋值运算符:= .+=.-=. *=./=.%= 比较运算符:>.>=.<.<=.!=.==.===(全等,数 ...

随机推荐

  1. 安装MySQL和Navicat,并与MyEclipse连接

    1.下载安装MySQL 1)到http://dev.mysql.com/downloads/下载MySQL社区版Server,和用于JDBC的Connector.一路默认安装就可以,须要注意的是记住M ...

  2. python-操作缓存

    参考王智刚同学博客 操作Mmecached 1. 安装API python -m pip install python-memcached 2. 启动memcached memcached -d -u ...

  3. iCIBA简单案例

    效果图: 代码: <!DOCTYPE html><html> <head> <meta charset="utf-8" /> < ...

  4. 微软HoloLens虚拟现实可以开发了。

    1.microsoft-hololens-now-available-to-developers 2.http://www.microsoft.com/microsoft-hololens/en-us ...

  5. select radio readonly

    首先 select radio 设置 disable的会无法提交数据. 这让我很头疼  而且 readonly 无效 后来发现.我把自己绕进去了..一般涉及 只读都是 不让用户修改 .而后台只更新 可 ...

  6. objective-C nil,Nil,NULL 和NSNull的小结

    nil用来给对象赋值(Object-C的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Object-C中类是一个对象,是类的meta-class ...

  7. Opensuse13.2开启ssh

    要开启ssh很简单,步骤分为三步 步骤1: 安装ssh zypper install ssh 步骤2:启动ssh daemon网上很多通过 service 命令或者 init.d 目录中的脚本启动ss ...

  8. C语言中对于结构的定义一般放在.h中还是.c中

    单文件使用的结构体放.c文件中 本模块内部使用结构体,放模块内部头文件中 供外部使用的结构体,放模块对外头文件中.

  9. debug模式启动provider

    debug 模式启动 1 sts中的配置见图片 2 centos中 ./knowledge-start.sh debug win系统ip ./knowledge-start.sh debug 192. ...

  10. ORA-19502: write error on file "", blockno (blocksize=)/linux下磁盘空间满了解决办法--Virtualbox

    今天,在测试环境启动数据库时,报错: SQL> startup; ORACLE instance started. Total System Global Area  285212672 byt ...