【发布时间】:2018-08-11 15:37:33
【问题描述】:
对于我用 PHP 编写的设置脚本(用于 CLI,而不是 Web),我使用设置文件以及其他“内容”文件。
设置文件像普通的ini文件一样构建
[header.subheader.moreheaders...]
keyA = value
keyB = value1|value2|...
“header.subheader.moreheaders...”和“keyX”将形成一个嵌套关联数组,其中“value”作为字符串或“value1|value2|...”作为简单数组(0-... )。
感谢this accepted answer,我已经可以递归地将标头拆分为递归数组。到目前为止,一切顺利。
但是,由于内容文件应包含对这些变量的引用,我希望能够从具有字符串占位符的多维数组中读取单个值,例如 $@R[header.subheader.moreheaders.key] 或 $@R[header.subheader.moreheaders.key.0],具体取决于它们是字符串或数组。
在脚本中,$@R[header.subheader.moreheaders.key.0] 应转换为 $SettingsVar[header][subheader][moreheaders][key][0] 以返回适当的值。
脚本和内容文件都不知道设置文件中的内容。脚本只知道一般结构和占位符$@R[...]。
This answer 似乎知道要搜索它的值。
由于我不完全理解this answer,我不确定这是否是正确的方法。
有没有类似的简单方法可以从building that array 得到相反的结果?
【问题讨论】:
-
你可能想看看 parse_ini_file php.net/manual/en/function.parse-ini-file.php
-
从我的设置文件构建数组已经完成,并且在超速时的工作方式类似于“parse_ini_file”,甚至已经包含了小节。我的问题是,当脚本不知道可以定义什么时,如何再次获取特定值。也许更简单:我如何将
"a.b.c.d"转换为$var["a"]["b"]["c"]["d"]以获取存储在那里的值。 -
php 变量无法启动 $@
-
没错。事实上,这在我所知道的任何脚本语言或配置文件占位符中都没有变量,这使得将它与 str_replace(“$@R”, $some_var) 一起使用非常容易读入并转换
[...]中的内容,然后使用剧本。然后我需要做的就是转换”a.b.c.d”,这样我就可以将它与内部脚本变量(例如:$var[“a”][“b”][“c”][“d”])一起使用来读取取出其中的值以替换内容文件行中的占位符。
标签: php multidimensional-array associative-array