我正陷入两难境地,我正在尝试创建一个"动态"搜索数组的函数,在这种情况下是我的会话数组,但它应该适用于任何数组.现在这不是我的问题,我的问题是动态地允许这样做......
这就是我所拥有的
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]];
}
Run Code Online (Sandbox Code Playgroud)
所以我想说我有一个数组:
array('First' => array('Second' => array('Third' => 'TEST VALUE'));
Run Code Online (Sandbox Code Playgroud)
现在我想打电话
$value = get('First/Second/Third');
Run Code Online (Sandbox Code Playgroud)
然后将"Test Value"作为$ value变量的值返回.
在这种情况下它可以工作,但它不是动态的,我希望它能够处理甚至10层深的阵列,而不添加越来越多的线....
那么也许有人在这里比我聪明:)
谢谢!!
$array = array(
'First' => array(
'Second' => array(
'Third' => 'TEST VALUE'
)
)
);
echo get($array, 'First/Second/Third'); // TEST VALUE
Run Code Online (Sandbox Code Playgroud)
使用的功能
function get($data, $part) {
foreach(explode("/", $part) as $key) {
$data = isset($data[$key]) ? $data[$key] : null;
}
return $data;
}
Run Code Online (Sandbox Code Playgroud)