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

2023-05-16

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



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 压缩 zend Framework 2 的 html 输出

    我目前正在 PHP 5 4 4 上使用 Zend Framework 2 beta 开发个人 web 应用程序以用于自学目的 我想知道是否可以在 html 输出发送到浏览器之前拦截它 以便通过删除所有不必要的空格来缩小它 我怎样才能在ZF2
  • php表格:每行显示3个单元格[重复]

    这个问题在这里已经有答案了 我看这里 数组放入每行 5 个单元格的表格中 https stackoverflow com questions 9099568 array into a table with 5 cells in each r
  • cURL 错误 77:设置证书验证位置时出错:CAfile

    我正在使用 Firebase php SDKlink https firebase php readthedocs io en latest index html并在 Windows 10 上的 XAMPP 服务器上使用 laravel 最
  • 覆盖供应商自动加载编辑器

    有没有办法让您创建的自动加载文件在调用供应商自动加载之前运行 我们似乎遇到了 SimpleSAML 的自动加载覆盖我们创建的自动加载文件之一的问题 我是 Composer 的新手 似乎无法在网上找到任何解决方案 我尝试将我们的自动加载文件包
  • 如何在MAMP中设置环境变量?

    如何在 MAMP 版本 3 3 中设置环境变量 我可以在我的 PHP 应用程序中使用它 我已经更新了 Applications MAMP Library bin envvars and envvars std file并添加以下行 Lice
  • session_regenerate_id 没有创建新的会话 id

    我有一个脚本 旨在完成当前会话并开始新的会话 我使用了一段代码 它在我的开发计算机上运行良好 但是 当我将其发布到生产服务器时 会话 ID 始终保持不变 以下是我重新启动会话的代码 session start SESSION array P
  • 具有动态表单名称的 form_widget

    在我的 Twig 模板中 我有一个 FOR 循环 它创建多个表单 如下所示 for thing in things set form id myform thing Id set form name attribute form myfor
  • 使用 PHP 将值插入可编辑 PDF,并保持可编辑状态

    我有一个带有可编辑字段的 PDF 我希望将 HTML 表单中的值传递到此 PDF 中 我尝试过使用 FPDF 并且它有效 但是将值传递到 PDF 后 pdf 中的字段不再可编辑 另一个缺点是 在将值传递到 PDF 时 我们必须为每个字段指定
  • 如何将 PHPMailer 与 Codeigniter 3 集成

    嗨 我正在尝试使用PHPMailer 库 https github com PHPMailer PHPMailer来自我的 Codeigniter 应用程序中的 GitHub 我下载了代码并解压到我的application library文
  • strlen()==0 和empty()之间有区别吗?

    我正在查看其他人编写的一些表单验证代码 我看到了这个 strlen 0 当测试表单变量是否为空时 我使用empty 功能 一种方法比另一种方法更好吗 它们在功能上等效吗 strlen是获取字符串中的字符数 同时empty用于测试变量是否为空
  • Symfony2中如何获取所有post参数? [复制]

    这个问题在这里已经有答案了 我想获取a的所有post参数symfony http symfony com Form I used all parameter this gt get request gt getParameterHolder
  • php 如何统计文件夹中的文件数量?

    我想让用户能够在自己的文件夹中上传一些文件 图片 但只有当该文件夹包含的图片少于五张时才可能 如果已经有 5 张图片 脚本必须让用户知道他 她的文件夹已满 所以 我想知道php中是否有函数可以计算文件夹中的文件数量 或者 php 中有其他方
  • 如何从导出的 csv 文件中删除双引号

    我正在使用 Laravel 5 8 并且添加了 Maatwebsite 包 用于从数据库表导出 CSV 文件 这是我导出的类 class ConfirmedExport implements FromCollection WithHeadi
  • 使用 PHP 的 Google Glass GDK 身份验证

    我正在尝试点击此链接来验证 GDK 中的用户 https developers google com glass develop gdk authentication https developers google com glass de
  • PHP 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • Android GCM 服务器的 API 密钥

    我有点困惑我应该为 GCM 服务器使用哪个 API 密钥 在文档中它说使用 android api 密钥 这对我不起作用并且总是给出未经授权的 http developer android com google gcm gs html ht
  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • 如何在php中使用preg添加html属性

    我正在寻找在 php 中编写一个脚本来扫描 html 文档并根据它找到的内容向元素添加新标记 更具体地说 我是扫描文档并为每个元素搜索CSS标记 float right left 如果找到它 它会添加align right left 基于它
  • 将 MySQL 结果作为 PHP 数组

    mysql 表 config name config value allow autologin 1 allow md5 0 当前的 php 代码 sth mysql query SELECT rows array while r mysq
  • 如何从字符串中删除所有数字?

    我想删除字符串 0 9 中的所有数字 我写了这段有效的代码 words preg replace 0 words remove numbers words preg replace 1 words remove numbers words

随机推荐

  • shell date 命令说明

    shell date 命令说明 用法 xff1a date 选项 43 格式 或 xff1a date u utc universal MMDDhhmm CC YY ss 以给定的格式显示当前时间 xff0c 或是设置系统日期 d date
  • shell 生成指定范围随机数与随机字符串

    shell 生成指定范围随机数与随机字符串 1 使用系统的 RANDOM 变量 fdipzone 64 ubuntu echo RANDOM 17617 RANDOM 的范围是 0 32767 如需要生成超过32767的随机数 xff0c
  • php 双向队列类

    xff08 deque xff0c 全名double ended queue xff09 是一种具有队列和栈的性质的数据结构 双向队列中的元素可以从两端弹出 xff0c 其限定插入和删除操作在表的两端进行 在实际使用中 xff0c 还可以有
  • php heredoc 与 nowdoc

    php heredoc 与 nowdoc heredoc 结构 heredoc 句法结构 xff1a lt lt lt 在该运算符之后要提供一个标识符 xff0c 然后换行 接下来是字符串本身 xff0c 最后要用前面定义的标识符作为结束标
  • HTML5 localStorage and sessionStorage

    HTML5 提供两种web存储方法 xff0c localStorage 与 sessionStorage localStorage 与 sessionStorage 区别 localStorage没有过期时间 xff0c 只要不clear
  • AZ_自定义不等高的cell

    自定义不等高的cell 1 给模型增加frame数据 纯代码 让ViewController继承UITableViewController xff0c 移除storyboard中的ViewController xff0c 新建一个UITab
  • php 导出CSV抽象类

    php 导出CSV抽象类 xff0c 根据总记录数与每批次记录数 xff0c 计算总批次 xff0c 循环导出 避免内存不足的问题 ExportCSV class php lt php php Export CSV abstract cla
  • php zip文件内容比较类

    php zip 文件比较类 xff0c 比较两个zip文件的内容 xff0c 返回新增 xff0c 删除 xff0c 及相同的文件列表 暂时只支持单层 需求 xff1a 上传一个zip文件 xff0c zip内有很多图片文件 需要对图片文件
  • php 获取/设置用户访问页面语言类

    User Language Class 获取 设置用户访问的页面语言 xff0c 如果用户没有设置访问语言 xff0c 则读取Accept Language 根据用户选择的语言显示对应的页面 xff08 英文 xff0c 简体中文 xff0
  • php session 读写锁

    php session 读写锁 先看一个例子 xff0c 功能 xff1a 1 点击页面中一个按钮 xff0c ajax执行php xff0c php中用session记录执行到哪一步 2 使用ajax轮询另一个php xff0c 获取se
  • linux 打开文件数 too many open files 解决方法

    linux 打开文件数 too many open files 解决方法 too many open files 出现这句提示的原因是程序打开的文件 socket连接数量超过系统设定值 查看每个用户最大允许打开文件数量 ulimit a f
  • php 求水仙花数优化

    水仙花数是指一个n位数 n gt 61 3 xff0c 它每个位上数字的n次幂之和等于它本身 xff0c n为它的位数 xff08 例如 xff1a 1 3 43 5 3 43 3 3 61 153 水仙花数又称阿姆斯特朗数 三位的水仙花数
  • php 验证身份证号码

    身份证号码的结构 身份证号码是特征组合码 xff0c 由17位数字本体码和一位校验码组成 排列顺序从左至右依此为 xff1a 六位数字地址码 xff0c 八位数字出生日期码 xff0c 三位数字顺序码和一位数字校验码 地址码 xff08 前
  • php 删除空目录及空子目录

    php 删除空目录及空子目录 步骤 xff1a 1 遍历目录及子目录 2 使用 scandir 判断目录是否为空 xff0c 为空则使用rmdir 删除 lt php 删除所有空目录 64 param String path 目录路径 fu
  • linux 分卷压缩命令

    linux 分卷压缩命令 1 使用tar分卷压缩 格式 tar cvzf filedir split d b 50m filename 例子 xff1a tar cvzf picture split d b 10m picture 将 pi
  • 使用html5 FileReader获取图片,并异步上传到服务器(不使用iframe)

    使用html5 FileReader获取图片 xff0c 并异步上传到服务器 不使用iframe 原理 xff1a 1 使用FileReader 读取图片的base64编码 2 使用ajax xff0c 把图片的base64编码post到服
  • C语言 赶鸭子题 (用递归写)

    用递归写 赶鸭子题 题目 一个人赶着鸭子去每个村庄卖 xff0c 每经过一个村子卖去所赶鸭子的 61 61 一半又一只 61 61 这样他经过了 61 61 七个村子 61 61 后还剩两只鸭子 xff0c 问他出发时共赶多少只鸭子 xff
  • php unserialize 返回false的解决方法

    php unserialize 返回false的解决方法 php 提供serialize 序列化 与unserialize 反序列化 方法 使用serialize序列化后 xff0c 再使用unserialize反序列化就可以获取原来的数据
  • linux使用flock文件锁解决crontab冲突问题

    linux的crontab命令 xff0c 可以定时执行操作 xff0c 最小周期是每分钟执行一次 关于crontab实现每秒执行可参考我之前的文章 linux crontab 实现每秒执行 现在有个问题 xff0c 如果设定了任务每分钟执
  • php 根据字符串生成对应数组方法

    php 根据字符串生成对应数组方法 例如 xff1a lt php config 61 array 39 project page index 39 61 gt 39 content 39 39 project page nav 39 61