首页  >  文章  >  后端开发  >  如何通过php 根据字符串生成对应数组的方法

如何通过php 根据字符串生成对应数组的方法

jacklove
jacklove原创
2018-06-09 11:37:181787浏览

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

例如:

<?php
$config = array(
    &#39;project|page|index&#39; => &#39;content&#39;,
    &#39;project|page|nav&#39; => array(
            array(
                &#39;image&#39; => &#39;1.jpg&#39;,
                &#39;name&#39; => &#39;home&#39;
            ),
            array(
                &#39;image&#39; => &#39;2.jpg&#39;,
                &#39;name&#39; => &#39;about&#39;
            )
    ),
    &#39;project|page|open&#39; => true
);
?>


根据$config生成以下数组

<?php
$result = array(
    &#39;project&#39; => array(
        &#39;page&#39; => array(
            &#39;index&#39; => &#39;content&#39;,
            &#39;nav&#39; => array(
                    array(
                        &#39;image&#39; => &#39;1.jpg&#39;,
                        &#39;name&#39; => &#39;home&#39;
                    ),
                    array(
                        &#39;image&#39; => &#39;2.jpg&#39;,
                        &#39;name&#39; => &#39;about&#39;
                    )
            ),
            &#39;open&#39; => true
        )    
    )
);
?>


方法:使用eval实现

<?php
$config = array(
    &#39;project|page|index&#39; => &#39;content&#39;,
    &#39;project|page|nav&#39; => array(
            array(
                &#39;image&#39; => &#39;1.jpg&#39;,
                &#39;name&#39; => &#39;home&#39;
            ),
            array(
                &#39;image&#39; => &#39;2.jpg&#39;,
                &#39;name&#39; => &#39;about&#39;
            )
    ),
    &#39;project|page|open&#39; => true
);
$result = array();
foreach($config as $key=>$val){
    
    $tmp = &#39;&#39;;
    $keys = explode(&#39;|&#39;, $key);
    
    for($i=0,$len=count($keys); $i<$len; $i++){
        $tmp .= "[&#39;".$keys[$i]."&#39;]";
    }
    
    if(is_array($val)){
        eval(&#39;$result&#39;.$tmp.&#39;=&#39;.var_export($val,true).&#39;;&#39;);
    }elseif(is_string($val)){
        eval(&#39;$result&#39;.$tmp.&#39;=&#39;.$val.&#39;;&#39;);
    }else{
        eval(&#39;$result&#39;.$tmp.&#39;=$val;&#39;);
    }
}
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中文网。

相关推荐:

关于JSON字符串key缺少双引号的解决方法 的讲解

如何通过curl 来获取 https的 请求方法

通过php 上传图片保存到数据库的实例讲解


以上是如何通过php 根据字符串生成对应数组的方法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn