首页  >  文章  >  后端开发  >  如何在不使用 eval() 的情况下使用字符串路径表达式访问嵌套数组值?

如何在不使用 eval() 的情况下使用字符串路径表达式访问嵌套数组值?

Linda Hamilton
Linda Hamilton原创
2024-10-26 03:00:03338浏览

How to Access Nested Array Values Using String Path Expressions Without eval()?

使用字符串路径表达式检索数组值

在编程中,通常需要使用灵活路径访问嵌套数组值。考虑如下所示的数组结构:

Array
(
    [0] => Array
        (
            [Data] => Array
                (
                    [id] => 1
                    [title] => Manager
                    [name] => John Smith
                )
         )
    [1] => Array
        (
            [Data] => Array
                 (
                     [id] => 1
                     [title] => Clerk
                     [name] =>
                         (
                             [first] => Jane
                             [last] => Smith
                         )
                 )

        )

)

任务是编写一个函数,该函数将字符串作为表示数组索引路径的输入并返回相应的值。这样可以避免使用潜在危险的 eval() 函数。

解决方案

解决此问题的关键在于将索引路径字符串分解为单独的数组键。这可以使用explode()函数来实现。

<code class="php">$pathStr = "0:Data:name";
$paths = explode(":", $pathStr); </code>

提取键后,我们可以使用循环迭代地导航数组:

<code class="php">$itens = $myArray;
foreach($paths as $ndx){
    $itens = $itens[$ndx];
}</code>

在此示例中,$itens现在将包含值“John Smith”。

因此,完成此任务的函数将如下所示:

<code class="php">function getArrayValueByPath($pathStr, $arrayToAccess)
{
    $paths = explode(":", $pathStr); 
    $itens = $arrayToAccess;
    foreach($paths as $ndx){
        $itens = $itens[$ndx];
    }
    return $itens;
}</code>

以上是如何在不使用 eval() 的情况下使用字符串路径表达式访问嵌套数组值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn