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' => '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
                )
        )
)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115801.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm如何缩进多行代码_pycharm统计代码行数

    pycharm如何缩进多行代码_pycharm统计代码行数方法一:在代码界面,点击鼠标右键,然后按住鼠标左键下拉选择就行了方法二:直接按下快捷键,alt+shift+insert,然后长按鼠标左键下拉即可进入多行编辑模式。…

    2022年8月26日
    9
  • 属性选择器与类选择器_input属性选择器

    属性选择器与类选择器_input属性选择器属性选择器1E[att$="val"]{sRules}选择具有att属性且属性值为以val结尾的字符串的E元素。123456910111213列表项目1

    2022年8月3日
    6
  • navicat v15.0.23.0激活码【2021.8最新】「建议收藏」

    (navicat v15.0.23.0激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~Z9LZO4ZKWA-eyJsaWNlbnNlSWQiOi…

    2022年3月22日
    110
  • Unity 协程

    Unity 协程协程前言调用方式停止方式yiledreturn语句执行时机WaitForSeconds(floatTime)WaitForSecondsRealtime(floattime)WaitForEndOfFrame()WaitForFixedUpdate()WaitUntil(Funcpredicate)WaitWhile(Funcpredicate)实现自定义函数实际开发中使用建议前言协程是unity提供的一个特殊的机制,他的特点就是可以方便的实现流程化的东西。但是就他的效率而言个人感觉并不乐观,

    2022年6月15日
    51
  • Elasticsearch系列——关闭Elasticsearch进程,并重新启动「建议收藏」

    Elasticsearch系列——关闭Elasticsearch进程,并重新启动「建议收藏」前言有一种情况,当我们启动elasticsearch之后,经过很长一段时间没有操作,自己已经忘了是否已经启动了elasticsearch,这时候我们可以通过下面的方式验证是否启动,并重新启动:step1查找ES进程号ps-ef|grepelastic注意:下面的那个进程是当前这条命令的,不是真正的elasticsearch进程step2杀掉ES进程…

    2022年6月3日
    99
  • spel表达式的用法_substring用法

    spel表达式的用法_substring用法SPEL运算符运算符类型运算符算术运算+、-、*、/、%、^关系运算<、>、==、<=、>=、lt、gt、eq、le、ge逻辑运算and、or、not、|条件运算?:(ternary)、?:(Elvis)正则表达式matchesdemo数值运算<!–+运算符:两个数字相加–><propertyname=”adjustedAmount”value=”#{counter.total+42}

    2025年10月28日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号