![](/img/trans.png)
[英]How to convert array to multidimensional array with special keys using php?
[英]How to convert a multidimensional array to $_SESSION keys in PHP
有一个像这样的数组(实际上我不知道它的深度,只是向您展示它的结构):
$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 . ';');
由于没人知道,我在这里发布:
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 . ';');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.