How can I use a string within the tree of an array in PHP?(如何在 PHP 中的数组树中使用字符串?)
问题描述
我正在获取 PHP 中某个值的路径,但不确定如何将数组与字符串路径组合?下面给了我一个值.
I am getting the path to a value in PHP, but not sure how to combine the array with a stringed path? The following gives me a value.
var_dump($array['boo']['far'][0]); // works
虽然这些都没有给我一个有效的(甚至是有效的 PHP).
While none of these give me a valid (or are even valid PHP).
$path = "['boo']['far'][0]";
var_dump($array.$path); // doesn't work
var_dump($array{$path}); // doesn't work
var_dump(eval($array.$path)); // doesn't work
有什么想法吗?
推荐答案
如果路径的字符串组件相当简单,则可以使用 preg_match_all
然后递归遍历数组的各个级别以找到所需的元素:
If your string components of the path are fairly simple, you could parse the path into components using preg_match_all
and then recursively go through the levels of the array to find the desired element:
$array['boo']['far'][0] = "hello world!
";
$path = "['boo']['far'][0]";
preg_match_all("/['?([^]']+)'?]/", $path, $matches);
$v = $array;
foreach ($matches[1] as $p) {
$v = $v[$p];
}
echo $v;
输出:
hello world!
3v4l.org 上的演示
除此之外,您唯一真正的选择是eval代码>.您可以使用
eval
来回显该值,或将其分配给另一个变量.例如,
Other than that, your only real alternative is eval
. You can use eval
to echo the value, or to assign it to another variable. For example,
$array['boo']['far'][0] = "hello world!
";
$path = "['boo']['far'][0]";
eval("echo $array$path;");
eval("$x = $array$path;");
echo $x;
$y = eval("return $array$path;");
echo $y;
输出:
hello world!
hello world!
hello world!
3v4l.org 上的演示
这篇关于如何在 PHP 中的数组树中使用字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 PHP 中的数组树中使用字符串?
基础教程推荐
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- 使用 PDO 转义列名 2021-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- HTTP 与 FTP 上传 2021-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01