2011-09-22 45 views
2

假設我有一個多維數組像這樣的事情:訪問多維數組的字符串分隔符

<?php 

$array = array("test1" => array("test2" => array("test3" => 1)), ... foo1 = array("foo2" => 2)); 

?> 

我想傳遞一個字符串像"test1.test2.test3"一個函數進而調用數組訪問數組元素元件。我可以使用eval()替換字符串[](調用$array["test2]["test3"] ...),但我想知道是否有一個不同的更堅實的方法調用數組元素而不遍歷其所有深度或使用eval()

回答

2

您可以使用

function get_multi($arr, $str) { 
    foreach (explode('.', $str) as $key) { 
     if (!array_key_exists($arr, $key)) { 
      return NULL; 
     } 
     $arr = $arr[$key]; 
    } 

    return $arr; 
}