在编程中,通常需要使用灵活路径访问嵌套数组值。考虑如下所示的数组结构:
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中文网其他相关文章!