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

本栏目更多精彩内容: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
                )
        )
)

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, 字符串
, 方法
, 栏目
, 生成
根据
php数组转字符串、php分割字符串为数组、php json字符串转数组、php字符串分割成数组、php 生成随机字符串,以便于您获取更多的相关知识。

时间: 2024-10-31 16:56:42

php中如何根据字符串生成对应数组方法的相关文章

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

本文实例讲述了php实现根据字符串生成对应数组的方法,是比较实用的技巧.分享给大家供大家参考.具体方法如下: 先看看如下示例: <?php $config = array( 'project|page|index' => 'content', 'project|page|nav' => array( array( 'image' => '1.jpg', 'name' => 'home' ), array( 'image' => '2.jpg', 'name' =>

.NET中删除空白字符串的10大方法

我们有无数方法可用于删除字符串中的所有空白,但是哪个更快呢? 介绍 我们有无数方法可用于删除字符串中的所有空白.大部分都能够在绝大多数的用例中很好工作,但在某些对时间敏感的应用程序中,是否采用最快的方法可能就会造成天壤之别. 如果你问空白是什么,那说起来还真是有些乱.许多人认为空白就是SPACE 字符(UnicodeU+0020,ASCII 32,HTML ),但它实际上还包括使得版式水平和垂直出现空格的所有字符.事实上,这是一整类定义为Unicode字符数据库的字符. 本文所说的空白,不但指的

.NET深入学习笔记(2):C#中判断空字符串的4种方法性能比较与分析

写的一篇关于字符串为空判断方法的性能分析文章,实验结果作者已经给出,结论是使用.length==0判断的效率最高,但是文章的结尾只有一句话,感觉不够详细,所以自己写下这个文章,算一个补充和学习吧. 程序代码执行的硬件环境: CPU Intel T2300 1.66GHz 内存 Kingston DDR2 667 1G 硬盘 80G 5400转 8m 测试的软件环境: OS Windows XP Pro IDE VS 2008 RTM 测试的代码如下: 定义了3个变量,分别调用4种方法,进行100

C#中判断空字符串的3种方法性能分析

性能|字符串 3种方法分别是:string a="";1.if(a=="")2.if(a==String.Empty)3.if(a.Length==0) 3种方法都是等效的,那么究竟那一种方法性能最高呢?本人用实验说明问题. 建立3个aspx页面(为什么用网页,主要是利用Microsoft Application Center Test ) WebForm1.aspxprivate void Page_Load(object sender, System.Event

【新人求助】C#中获取获取字符串的长度的方法,希望大家帮个忙!!谢谢!!

问题描述 如题.或者说,C#中有没有一种现成的方法可以在字符串统计出一个给定的字符的数量.C#初学者,也不知道提的问题是不是很白痴.希望各位大大帮个忙.谢谢 解决方案 解决方案二:对了,不是字符长度的说解决方案三:或者可以用正则试试,字符串好像没有这样的方法解决方案四:linq正则都可以

asp.ent(C#)中判断空字符串的3种方法以及性能分析_实用技巧

3种方法分别是: string a=""; 1.if(a=="") 2.if(a==String.Empty) 3.if(a.Length==0) 3种方法都是等效的,那么究竟那一种方法性能最高呢?本人用实验说明问题. 建立3个aspx页面(为什么用网页,主要是利用Microsoft Application Center Test ) WebForm1.aspx 复制代码 代码如下: private void Page_Load(object sender, Sys

ASP.NET中过滤HTML字符串的两个方法

先记下来,以作备用!         ///   <summary>去除HTML标记        ///               ///   </summary>           ///   <param name="Htmlstring">包括HTML的源码</param>           ///   <returns>已经去除后的文字</returns>           public stat

10个.NET中删除空白字符串的方法_实用技巧

我们有无数方法可用于删除字符串中的所有空白,但是哪个更快呢? 介绍 如果你问空白是什么,那说起来还真是有些乱.许多人认为空白就是SPACE 字符(UnicodeU+0020,ASCII 32,HTML ),但它实际上还包括使得版式水平和垂直出现空格的所有字符.事实上,这是一整类定义为Unicode字符数据库的字符. 本文所说的空白,不但指的是它的正确定义,同时也包括string.Replace(" ", "")方法. 这里的基准方法,将删除所有头尾和中间的空白.这就

c++-求教!通过内存映射,实现生成的数组存储到文件中,显示出来头100个数?

问题描述 求教!通过内存映射,实现生成的数组存储到文件中,显示出来头100个数? 我目前就了解个大概,现在我不明白const DWORD mmf_size = 512*1024;//?这个地方不懂 ,这个原来的代码部分,我拿别人的代码改的,增加了自己的double的动态数组SigNRead,这个怎么弄 我就想实现,通过内存映射 实现写入 读取 double数组 数组有 1列 90000行个double数组成. #include #include #include #include #define