我遇到了一個困境,我試圖創建一個函數來「動態」搜索槽數組,在這種情況下,我的會話數組,但它應該是任何。現在,是不是我的問題,我的問題是動態允許這樣做......通過數組的動態搜索
這裏就是我有
public static function get($search = 'First/Second/Third') {
$explode = explode('/',$search);
$count = count($explode);
if ($count == 1)
if (isset($_SESSION[$explode[0]]))
return $_SESSION[$explode[0]];
elseif ($count == 2)
if (isset($_SESSION[$explode[0]][$explode[1]]))
return $_SESSION[$explode[0]][$explode[1]];
elseif ($count == 3)
if (isset($_SESSION[$explode[0]][$explode[1]][$explode[2]]))
return $_SESSION[$explode[0]][$explode[1]][$explode[2]];
}
所以我們可以說我有一個數組:
array('First' => array('Second' => array('Third' => 'TEST VALUE'));
現在,我想打電話給
$value = get('First/Second/Third');
,然後得到「測試值」早在我的$值變量的值。
在這種情況下它的工作原理,但它僅僅是不動的,我希望它能夠處理可能連10層深陣列爲好,不添加越來越多的線....
嗯,也許有人在這裏更聰明,然後我:)
謝謝!
這是一個很好的解決方案。我很慚愧地承認,當我遇到這個問題時,我又重新開始評估eval()。 – Andri
但爲什麼''data = isset($ data [$ key])? $ data [$ key]:null''而不是'$ data = $ data [$ key]''?如果沒有這樣的密鑰,'$ data''將會是空的?!? – mzedeler
很棒!!!!我喜歡這個漂亮又幹淨的解決方案,它非常完美!謝謝巴巴! –