如何通过路径访问多维数组元素? [复制]

2024-02-15

可能的重复:
PHP:使用字符串作为数组索引路径来检索值 https://stackoverflow.com/questions/1677099/php-use-a-string-as-an-array-index-path-to-retreive-a-value

我有一个像这样的数组:

$array['image']['comment'] = 'something';
$array['image']['tag'] = 'happy';
$array['image']['colors']['blue'] = '12345';

如果我有字符串中每个元素的路径,如何设置或获取数组值?

例如哪里$path = 'image/colors/blue';下面的函数应该返回12345

function get_array($array, $path)
{
//what goes here?
}

function set_array($array, $path, $value)
{
//what goes here?
}

尝试这个:

$arr = array('a' => 'A', 'b' => array('c' => 'C', 'd' => array('e'=>'E')));

function read_array($array, $path)
{
  if($pos = strpos($path, '/') !== false){
    $key = substr($path, 0, $pos);
    $restOfKey = substr($path, $pos + 1); 
    return read_array($array[$key], $restOfKey);
  } else {
    $key = $path;
    return $array[$key];
  }
}

echo read_array($arr, 'a');      //A
echo read_array($arr, 'b/c');    //C
echo read_array($arr, 'b/d/e');  //E

您当然应该添加错误检查等。

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

如何通过路径访问多维数组元素? [复制] 的相关文章

  • 初始化二维数组

    我正在尝试初始化一个二维数组 其中每个元素的类型是char 到目前为止 我只能通过以下方式初始化这个数组 public class ticTacToe private char table public ticTacToe table 0
  • 如何使用图像生成 SVG 二维码?

    我有一个用于生成 jpeg 和 png 格式的 qrcode 的代码 但也想在 PHP 中生成带有背景图像的 svg qrcode 我正在使用 qrlib php 生成 jpeg 和 png 格式 QRlib php 也支持 SVG 不是吗
  • Laravel:运行队列:在 Windows Azure Web App 上连续监听

    我觉得问这个问题有点傻 但我似乎无法在互联网上找到这个问题的答案 经过几个小时的搜索后 我发现在 Linux 服务器上 您使用 Supervisor 在您的网站上连续运行 php artisanqueue listen 无论有或没有守护进程
  • 命令运行时从 shell_exec 命令获取输出

    我正在编写一个 PHP 脚本网页 该网页旨在接受先前上传到服务器的 JFFS2 图像的文件名 然后 该脚本将使用映像重新刷新服务器上的分区 并输出结果 我一直在用这个 tmp shell exec update flash v filena
  • 如何在 Yii 中设置 returnUrl 值

    我正在使用 Yii 我遇到的问题是Yii app gt user gt returnUrl 它总是让我回到index php page 由于我不知道用户从哪个页面访问了当前页面 如何将其值设置为请求当前页面的页面 您可以使用Yii app
  • MySQL 连接不工作:2002 没有这样的文件或目录

    我正在尝试设置 WordPress 我已经运行了 Apache 和 MySQL 并且帐户和数据库都已设置 我尝试建立一个简单的连接 我总是得到这个 错误 2002 没有这样的文件或 目录 它正在谈论什么文件或目录 我使用的是 OS X Sn
  • 如何限制 JSON 访问?

    我有一个 Web 应用程序 可以从新创建的 JSON API 中提取数据 我的静态 HTML 页面通过 JavaScript 从静态 HTML 页面动态调用 JSON API 如何限制对 JSON API 的访问 以便只有我 我的网站 可以
  • 安全转义表名/列名

    我在 php 中使用 PDO 因此无法使用准备好的语句转义表名或列名 以下是我自己实现它的万无一失的方法 tn str replace REQUEST tn column str replace REQUEST column sql SEL
  • 更新查询增量字段加上 1 codeigniter 函数 [重复]

    这个问题在这里已经有答案了 我想在 codeigniter 项目中将字段值增加到当前值加 1 所以 我做了一个功能 但它不起作用 我的职能是 function increse field by 1 table name fieldToInc
  • PHP mail() 函数发送电子邮件,但需要 10 多分钟才能显示

    因此 我的用户从手机上的 Android 应用程序进行注册 注册成功后 我会触发一封邮件发送到注册的电子邮件地址 其中包含来自我的 PHP 脚本的激活密码 这是我使用的代码行 非常简单 mail to subject message hea
  • 如何从 jquery .load 获取 php 响应

    例如我给出另一个代码 这是我的 some3 php 代码 第一个文件
  • Symfony 5.4 Security Bundle,注册后无法登录

    我在 5 4 版本上构建空的新项目 我使用这些命令来构建项目 composer create project symfony skeleton 5 4 testapp54 cd testapp54 composer require weba
  • 返回早期概念在 PHP 中有何用处

    我已经在以下链接中了解了最佳实践https pear php net manual en standards bestpractices php https pear php net manual en standards bestprac
  • 如何找到查询结果的大小

    我在 Rails 中有以下查询 records Record select y id source where source gt source y id gt y id group y id source having count 1 如
  • Lodash _.hasIntersection?

    我想知道两个或多个数组是否有共同的项目 但我不在乎这些项目是什么 我知道 lodash 有一个 intersection方法 但我不需要它来遍历每个数组的每个项目 相反 我需要类似的东西 hasIntersection一旦找到第一个常见的出
  • 如何将事件插入为 - Out Office

    我目前正在使用 Google Calendar API 并尝试在我的谷歌日历中插入新的 外出 事件 我使用以下代码插入事件 client getClient service new Google Service Calendar clien
  • 为什么C++变量是指针时不需要正确定义?

    我对 C 语言完全陌生 特别是指针 经验主要是 PHP 并且希望对以下内容进行一些解释 我已经尝试寻找答案 这两行代码如何能够在我的程序中完成完全相同的工作 第二行似乎违背了我迄今为止所学到和理解的关于指针的一切 char disk 3 D
  • 将 JSON 数组转换为 bash 数组并保留空格

    我想将 JSON 文件转换为 bash 字符串数组 稍后我可以对其进行迭代 我的JSON结构如下 USERID TMCCP CREATED DATE 31 01 2020 17 52 USERID TMCCP CREATED DATE 31
  • Symfony2 dev环境可以工作,prod环境给出404错误

    我最近在我的机器上成功安装了 Symfony2 我可以访问http localhost app dev php 开发环境 但是 当我尝试访问 prod 环境时 http localhost app php 我在浏览器中收到以下错误消息 哎呀
  • 如何使用 PHP 从 iframe 获取 url

    如何从下面的链接获取 YouTube 网址 您可以使用 regex 和 preg match 函数 preg match src iframe string match url match 1 UPDATE如果您有使用 php 生成的页面或

随机推荐

  • 实体框架:全局禁用删除

    我们正在开始一个新的应用程序 我们想使用实体框架 我们很少担心意外删除sql行 特别是意外设置相关数据等 我想禁用每个删除 因为我们只是用 validUntil 列标记每一行并且从不删除行 I saw 它可以通过 sql 中的角色来完成 h
  • 如何以编程方式更改 RecyclerView 中项目的位置?

    有没有办法将特定项目移动到特定位置RecyclerView using LinearLayoutManager以编程方式 你可以这样做 一些活动 片段 无论什么 List
  • 为什么连接字符串不适用于 EF 迁移?

    我创建了一个与 NuGet Gallery 实现一起使用的数据库 我可以在 sql manager 2012 中看到数据库 并且可以使用我的连接字符串从我编写的测试程序访问它 但是 当我尝试在包管理器控制台中运行 Update Databa
  • VB 中的类与模块

    在 VB 中使用模块而不是类有什么优势 如果有的话 它们有何不同 使用模块有哪些优点 缺点 在 VB 或 VB NET 中 我两者都使用 A Modules and B 类只有Shared功能 解决同样的问题 两者都可以让你从逻辑上grou
  • 删除所有早于 X 天的文件,但至少保留 Y 个最新的文件[重复]

    这个问题在这里已经有答案了 我有一个脚本 可以从备份目录中删除早于 X 21 天的数据库转储 DB DUMP DIR var backups dbs RETENTION 21 24 60 3 weeks find DB DUMP DIR t
  • 代号一个应用程序中的额外侧边菜单

    在我的应用程序中 我有一个右侧菜单 但似乎还有一个左侧菜单 仅包含后退按钮 没有菜单按钮 带有三条水平线 但如果触摸屏幕左边缘并拖动 则会出现菜单 我不明白为什么要创建它 但是有什么方法可以禁用或删除它吗 None
  • 在 PHP 中查找多个字符串位置

    我正在编写一个解析给定 URL 的 PHP 页面 我能做的就是仅找到第一个出现的值 但是当我回显它时 我得到另一个值而不是给定的值 这就是我到目前为止所做的 我知道可以使用循环 但我不知道循环体的条件 我怎
  • 在从 PHP 发送的电子邮件中使用 HTML 格式

    如何通过 PHP 脚本发送 HTML 格式 由于某种原因 它总是显示为 b Example b 代替Example 我确信我必须在某个地方包含 HTML 标头 我只是不知道需要做什么 我是一个十足的 PHP 菜鸟 这是我的 PHP 脚本 相
  • Jupyter笔记本导入错误:没有名为tornado.log的模块

    我已经安装了 jupyter 当尝试启动它时 出现以下错误 File Library Frameworks Python framework Versions 2 7 bin jupyter notebook line 7 in
  • 防病毒软件说我的程序可疑

    我在 wpf Visual Studios 中构建了一个程序 当我运行它时 avast 说检测到可疑程序 然后关闭我的程序 我可以采取任何措施来验证它 还是必须进入 avast 并将其设置为不阻止我的程序 您当然可以在大多数主要防病毒软件包
  • 获取 json 数组的下一个和上一个元素

    我的代码需要帮助 我想要一个上一个和一个下一个按钮 这些按钮将调用函数 viewBlogItem direction cat blogid 在该函数中 我将读出 json 文件 并按 类别 进行分类 每个 blogItem 都有一个arti
  • 机器码对齐

    我正在尝试了解机器代码对齐的原理 我有一个汇编器实现 可以在运行时生成机器代码 我在每个分支目标上使用 16 字节对齐 但看起来这不是最佳选择 因为我注意到 如果我删除对齐 有时相同的代码会运行得更快 我认为这与缓存线宽度有关 因此某些命令
  • 使用C#播放MP3文件

    我正在寻找一种无需任何第三方播放 MP3 文件的方法 媒体播放器等 有什么方法可以做到这一点吗 谢谢 我写了一个开源库 名为NAudio http naudio codeplex com可以做到这一点 private IWavePlayer
  • boost::graph 中的 DFS 更改图形内容

    最小的例子 include
  • 是否可以禁用应用程序而不隐藏它们?

    背景 最终用户可以通过操作系统内置的应用程序管理器禁用某些应用程序 该屏幕看起来像这样 在某些设备上它显示 关闭 一旦禁用应用程序 它就不会处于活动状态 并且不会以任何方式运行 直到您再次重新启用它 不过 为了重新启用它 您仍然可以在应用程
  • 即使具有 INTERNET 权限,连接到页面时仍显示“权限被拒绝”

    从 Android 连接到任何页面时 我收到此异常 06 09 12 50 42 725 WARN System err 1080 java net SocketException Permission denied 06 09 12 50
  • python的sphinx中var、cvar和ivar有什么区别?

    我正在阅读 sphinx 文档页面 讽刺的是发现关于 var ivar 和 cvar 之间差异的文档非常缺乏 我想知道是否有人可以解释内联代码中每个不同名称空间之间的区别 Example class foo object var str f
  • 替换/删除与正则表达式 (.NET) 不匹配的字符

    我有一个正则表达式来验证字符串 但现在我想删除所有与我的正则表达式不匹配的字符 E g regExpression w text This is a sample text with some invalid characters Remo
  • 为什么我的 IdentityRoles 和 ApplicationUsers 没有填充到我的数据库中?

    我在 net core 3 1 Web 应用程序中播种用户时遇到问题 正在 SQL Server 上创建相应的表 但当我运行应用程序时没有创建任何行 我不知道为什么数据库没有被填充 有人能发现这个问题吗 DBInitializer 文件将用
  • 如何通过路径访问多维数组元素? [复制]

    这个问题在这里已经有答案了 可能的重复 PHP 使用字符串作为数组索引路径来检索值 https stackoverflow com questions 1677099 php use a string as an array index p