PHP 中变量的数组路径

2024-04-19

因此,我编写了一个类,它可以解析 XML 文档并从中创建 SQL 查询,以根据设置更新或插入新行。

由于脚本必须处理任意数量的嵌套块,因此我放入所有值的数组的路径是动态创建的,与以下示例非常相似:

$path = array('field1','field2');
$path = "['".implode("']['",$path)."']";

eval("\$array".$path."['value'] = 'test';");

基本上$path包含一个数组,显示我们当前在数组中的深度,如果$path例如包含值main_table and field我要套装$array['main_table']['field']['value'] to 'test'

正如您所看到的,我目前正在使用 eval 来执行此操作,并且效果很好。我只是想知道是否有一种方法可以在不使用 eval 的情况下做到这一点。

就像是$array{$path}['value'] = 'test';但然后是一些真正有效的东西。

有什么建议么?

EDIT

我寻找替代方案的原因是我认为 eval 是不好的做法。

第二次编辑

将实际代码更改为虚拟代码,因为它引起了很多误解。


使用这样的东西:

/**
 * Sets an element of a multidimensional array from an array containing
 * the keys for each dimension.
 * 
 * @param array &$array The array to manipulate
 * @param array $path An array containing keys for each dimension
 * @param mixed $value The value that is assigned to the element
 */
function set_recursive(&$array, $path, $value)
{
  $key = array_shift($path);
  if (empty($path)) {
    $array[$key] = $value;
  } else {
    if (!isset($array[$key]) || !is_array($array[$key])) {
      $array[$key] = array();
    }
    set_recursive($array[$key], $path, $value);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 中变量的数组路径 的相关文章

随机推荐

  • 代币发行(AADSTS50013:断言包含无效签名)

    当我尝试使用 Cortana Bot 用户令牌 这是一个图形令牌 为另一个使用 Web API 应用程序生成 代表 令牌时 出现错误 如下所述 ClientAssertionCertificate ClientCredential通过传递其
  • django-taggit:使管理中不需要标签

    我已经开始使用 django taggit 它似乎符合要求 但对我来说 管理网站仍然存在问题 我包括了tagsModelAdmin 中的属性如下所示 class MyModel db models Model name models Cha
  • 如何在 iPhone 应用程序中自动录制视频而无需用户交互

    我正在开发需要自动录制视频的 iPhone 应用程序 我使用了移动核心服务框架并使用它 我使其进入视频模式并单击录制选项 开始捕获视频 但我想要它自动 也就是说 我应该能够录制视频而无需单击录制选项 当视频模式出现时 它会自动开始录制视频
  • 在vim中禁用omnicomplete或ftplugin或其他东西

    我正在尝试禁用 sql 中的 自动 全向 任意 完成 这对我来说是个问题 因为我用过
  • PHP - preg_replace YouTube 嵌入,无论顺序如何

    我试图从 YouTube 嵌入代码中捕获 3 个元素 但有时这些元素的顺序不同 或者有时嵌入代码包含更多参数 我想找到一种方法来提取视频 ID 宽度和长度 以便为 AMP 创建 YouTube 集成 嵌入示例 应改写为
  • Android webview 不加载页面,但应用程序从浏览器加载

    我有一个 html 5 移动网络应用程序 可以从浏览器加载 但卡在 android webview 上 我们在加载网络应用程序之前使用了启动屏幕 但我的网络视图卡在启动屏幕中 不加载主页 我们正在使用武尔夫 API http wurfl s
  • java中带有日语字符的电子邮件

    我正在使用java发送电子邮件 发送的消息可以使用不同的语言 但是当我用日语发送消息时 收到的邮件只有 人物 代码是这样的 String content u30d5 u30a1 u30a4 u30eb u540d SMTPMessage m
  • 在 jQuery Mobile 上禁用 data-role="header" 上的页面转换 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 是否可以禁用 data role h
  • 终止连接到 erlang 端口的进程

    我想写一个某种主管 我正在尝试实现关闭外部程序的功能 外部进程通过端口连接到 erlang 的代码 我不知道如何通过发送信号或其他任何方式来关闭该程序 关闭端口不是解决方案 因为我已经检查过许多程序不会在 SIGPIPE 上退出 您有任何想
  • 使用 elasticsearch-dsl-py 对另一个字段中包含的字段创建术语查询

    我在用elasticsearch dsl py https github com elasticsearch elasticsearch dsl py并希望过滤包含在另一个术语中的术语 如下所示 slug foo foo slug bar
  • 如何更改Accounts-UI模板?

    根据望远镜 http demo telesc pe 例子 源代码 https github com SachaG Telescope 可以显示自定义的 account ui 表单 参见他的用户登录 html https github com
  • 是否可以为 VS Code 编写二进制文件导入扩展?

    我想在 vs code 中显示二进制文件的一些信息 是否可以为 VS Code 编写一个扩展名 以便在资源管理器中选择该文件 或直接打开它 时 您会看到该扩展名从二进制文件中提取的一些文本 因此 该扩展的核心功能将是 简化的 二进制到文本转
  • R dplyr left_join 错误

    所以我一直在尝试使用 left join 将新数据集的列获取到我的主数据集 称为员工 我已经仔细检查了矢量名称和我没有进行的清理 但似乎没有任何效果 这是我的代码 将不胜感激任何帮助 job codes lt read csv Quest
  • 如何将 Cognito 用户池与 Facebook 等外部提供商结合起来?

    到目前为止 Cognito 拥有支持 Facebook 等外部提供商的身份池 现在有 Cognito 用户池 我很想使用它 但我不知道如何同时支持 Cognito 用户池和 Facebook 等外部提供商 看来身份池和用户池是分开的东西 我
  • Android.mk 包含其他项目

    说明 我的问题的目标是了解如何创建一个可以构建和运行的 Android mk makefile 如下所示的项目结构 Library is library on eclipse 数据 项目库 Project Interface 包含 1 个静
  • Html.Action 不会呈现用 [HttpPost] 注释的操作方法

    我的控制器上有以下方法 HttpPost public ActionResult UnplannedCourses int studentId var model CreateUnplannedCourseModel studentId r
  • 如何从 jQuery UI 日期选择器获取日期

    每当用户在 jQuery UI datepicker 中选择日期并单击表单上的按钮时 我想从 datepicker 获取日期 好吧 我需要获取他们选择的日期的年月日 如何从 jQuery UI 获取日期 Use var jsDate you
  • 控制台错误“非法的base64字符20”[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我使用以下代码进行加密和解密 而解密时我在运行时收到错误 错误消息是 非法的 base64 字符 20 加密代码 String sec
  • 是否可以通过在 ASP.NET 中模拟 Windows 身份验证用户来从 Active Directory 检索数据?

    我一整天都在试图解决这个问题 并且我在标准谷歌留言板答案中读到了一些相互矛盾的信息 我想做的是从活动目录中检索域用户 即当前登录用户 的电子邮件地址 我的 ASP NET 4 网站设置为 Windows 身份验证 在 Active Dire
  • PHP 中变量的数组路径

    因此 我编写了一个类 它可以解析 XML 文档并从中创建 SQL 查询 以根据设置更新或插入新行 由于脚本必须处理任意数量的嵌套块 因此我放入所有值的数组的路径是动态创建的 与以下示例非常相似 path array field1 field