我有一个像下面这样的多维数组(图1)。我只想将所有等于父数组键的子数组键作为键值。
举个例子, 父密钥是23.并且23具有子密钥24.子密钥24具有子子密钥(25,26,27 ......),并且子子密钥可以具有另一个子密钥。所以我想要的是将所有子,子,子子...推送到父键23.参见图2.
如果有人能为此提出解决方案,我真的很感激。
非常感谢..
图1
Array ( [
18] => Array (
[1] =>
[14] =>
)
[23] => Array (
[24] =>
)
[24] => Array (
[25] =>
[26] =>
)
[26] => Array (
[27] =>
[28] =>
)
)
图2
Array ( [
18] => Array (
[1] =>
[14] =>
)
[23] => Array (
[24] => Array (
[25] =>
[26] => Array (
[27] =>
[28] =>
)
)
)
)
答案 0 :(得分:0)
我从快速调试中留下了评论的回声
我的输出:
Array
(
[18] => Array
(
[1] =>
[14] =>
)
[23] => Array
(
[24] => Array
(
[25] =>
[26] => Array
(
[27] =>
[28] =>
)
)
)
)
<强>代码强>
<?php
function test ($scan, $where="array")
{
global $array;
global $position;
//echo("\r\n New dimension: ".$where);
foreach ($scan as $key => $value)
{
//echo("\r\n Scanning: ".$where."[".$key."]");
if ( !isset($position[$key]) )
{
$position[$key] = $where."[".$key."]";
//echo("\r\n Key position ".$key." set on: ".$position[$key]);
//print("\r\n $position[$key]");
}
else
{
//echo("\r\n Key ".$key." is already set on position: ".$position[$key]);
$old = ("\$".$where."[".$key."]");
$cmd = ("\$".$position[$key]." = &".$old);
//print("\r\n ".$cmd);
eval("$cmd;");
eval("unset ($old);");
}
if ( is_array($value) )
{
//echo("\r\n Enterring: ".$where."[".$key."]");
test($value, $position[$key]);
//echo("\r\n Enterring: ".$where);
}
}
//echo("\r\n Exiting: ".$where);
}
print_r($array);
test($array);
print_r($array);
?>