有一个像这样的数组(实际上我不知道它的深度,只是告诉你它的结构):
$ary = array(
'A' => array(
'B' => array(
'C' => array(
'D' => array(
'E' => 'F'
)
)
)
)
);
我想要的是将此数组转换为$ _SESSION的键,然后得到它的值如下:
$val = $_SESSION['A']['B']['C']['D']['E']['F'];
因为我不知道这个数组有多深,所以我现在正在做的只是继续循环它,is_array然后foreach,is_array然后foreach ......直到最后一项在这个数组中像这样:
$val = $_SESSION['A'];
$val = $_SESSION['A']['B'];
$val = $_SESSION['A']['B']['C'];
$val = $_SESSION['A']['B']['C']['D'];
......
必须有一些比这更优雅的方式,任何想法都会受到赞赏!!!
更新: 这是我昨晚发现的:
public static function array_keys_multi(array $array)
{
$keys = array();
foreach ($array as $key => $value) {
$keys[] = $key;
if (is_array($array[$key])) {
$keys = array_merge($keys, array_keys_multi($array[$key]));
} else {
$keys[] = $value;
}
}
return $keys;
}
$params = '$_SESSION[\'' . implode('\'][\'', static::array_keys_multi($keys)) . '\']';
$exectuion = 'isset(' . $params . ')?' . $params . ':\'\'';
eval('return ' . $exectuion . ';');
答案 0 :(得分:0)
由于没有人有任何想法,我在这里发帖:
public static function array_keys_multi(array $array)
{
$keys = array();
foreach ($array as $key => $value) {
$keys[] = $key;
if (is_array($array[$key])) {
$keys = array_merge($keys, array_keys_multi($array[$key]));
} else {
$keys[] = $value;
}
}
return $keys;
}
$params = '$_SESSION[\'' . implode('\'][\'', static::array_keys_multi($keys)) . '\']';
$exectuion = 'isset(' . $params . ')?' . $params . ':\'\'';
eval('return ' . $exectuion . ';');