我需要从该数组中获取所有键。我尝试了递归调用,但只获得了第一个元素键。我希望所有的数组键都以级别存储到数组中。表示keys[0] = array(540,198)
。下面是我要遍历并获取所有键的数组。我已经工作了1天以上,但没有得到任何帮助,请帮助解决此问题。
(
[ch] => Array
(
[540] => Array
(
[194] => Array
(
[16] => Array
(
[144] => Array
(
)
[145] => Array
(
)
[146] => Array
(
)
[147] => Array
(
)
[148] => Array
(
)
[195] => Array
(
)
[199] => Array
(
)
[149] => Array
(
)
[200] => Array
(
)
[150] => Array
(
)
[444] => Array
(
)
[151] => Array
(
)
[445] => Array
(
)
[446] => Array
(
)
[152] => Array
(
)
)
)
)
[198] => Array
(
[194] => Array
(
[16] => Array
(
[144] => Array
(
)
[145] => Array
(
)
[146] => Array
(
)
[147] => Array
(
)
[148] => Array
(
)
[195] => Array
(
)
[199] => Array
(
)
[149] => Array
(
)
[200] => Array
(
)
[150] => Array
(
)
[444] => Array
(
)
[151] => Array
(
)
[445] => Array
(
)
[446] => Array
(
)
[152] => Array
(
)
)
)
)
)
)
$this->checkProductConfiguraions($configuraion,$count,$levelKeys);
function checkProductConfiguraions($configuraion,$count,$levelKeys) {
foreach ($configuraions as $configuraion) {
if (is_array($configuraion)) {
$parentKeys = array_keys($configuraion);
if(isset($levelKeys[$count])){
$levelKeys[$count] = array_unique(array_merge($levelKeys[$count],$parentKeys));
} else {
$levelKeys[$count] = $parentKeys;
}
$count++;
$levelKeys[$count] = array();
for($i=0;$i<count($parentKeys);$i++){
$levelKeys[$count] = array_unique(array_merge($levelKeys[$count],array_keys($configuraion[$parentKeys[$i]])));
if(is_array($configuraion)){
$levelKeys = $this->checkProductConfiguraions($configuraion,$count,$levelKeys);
}
}
}
}
}
function check($configurations, $count = 0, $levelKeys = array())
{
foreach ($configurations as $k => $configuration) {
if (!array_key_exists($count, $levelKeys) ||
!in_array($k, $levelKeys[$count], true)) {
$levelKeys[$count][] = $k;
}
if (!empty($configuration)) {
$levelKeys = $this->check($configuration, $count + 1, $levelKeys);
}
}
return $levelKeys;
}
在第一轮中,我用第一个键填充$levelKeys
变量。
在第一个IF
中,我使用in_array()
和in_array()
来避免重复的值。
如果我正在分析的数组具有嵌套数组,则我调用传递的array_key_exist()
函数:嵌套数组,达到的级别,levelKeys。