如何在不使用 eval() 的情況下使用字串路徑表達式存取嵌套數組值?

Linda Hamilton
發布: 2024-10-26 03:00:03
原創
337 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!