Я столкнулся с дилеммой, я пытаюсь создать функцию для «динамического» поиска через массив, в этом случае мой массив сеансов, но он должен быть для любого. Теперь это не моя проблема, моя проблема заключается в динамически позволяют это сделать ...Динамический поиск по массиву
Вот что у меня есть
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');
, а затем вернуть значение «Test Value» в качестве значения для переменной $ value.
В этой ситуации он работает, но это просто не динамично, и я хочу, чтобы быть в состоянии справиться, может быть, даже 10 слоя глубокого массива, а также, не добавляя больше и больше линий ....
Ну, может быть, кто-то здесь умнее, чем я :)
Спасибо!
Это отличное решение. Мне стыдно признаться, что я вернулся к eval(), когда однажды у меня возникла эта проблема. – Andri
Но почему '' $ data = isset ($ data [$ key])? $ data [$ key]: null'' вместо просто '' $ data = $ data [$ key] ''? Если такого ключа нет, '' $ data' будет null?!? – mzedeler
GREAT !!!! Мне нравится это приятное и чистое решение, это просто отлично! Спасибо, Баба! –