在程式設計中,通常需要使用靈活路徑存取嵌套數組值。考慮如下所示的陣列結構:
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中文網其他相關文章!