其实没什么好问的。我想要打印数组,但不使用递归。原因是程序有一个错误,因为它的数据太多,必须重写旧功能。该函数称为递归函数,多次调用后我的脚本无法分配更多内存,因此我的示例数组为:
array (
0 =>
array (
'id' => '5713008',
'children' =>
array (
0 =>
array (
0 =>
array (
'id' => '13',
'children' =>
array (
'id' => '20',
'children' =>
array (
0 =>
array (
'id' => '120',
),
1 =>
array (
'id' => '464',
),
),
),
),
1 =>
array (
0 =>
array (
'id' => '21',
),
),
),
1 =>
array (
'id' => '143',
'children' =>
array (
1 =>
array (
'id' => '60011',
),
2 =>
array (
'id' => '60012',
),
3 =>
array (
'id' => '5299316',
),
4 =>
array (
'id' => '5712901',
),
5 =>
array (
'id' => '147',
),
6 =>
array (
'id' => '148',
),
7 =>
array (
'id' => '149',
),
8 =>
array (
'id' => '60010',
),
),
),
),
),
)
我需要这样的数据:
id: 5713008
--------------
>>id: 13
--------------
>>>>id: 20
--------------
>>>>>>>>id: 120
--------------
>>>>>>>>id: 464
--------------
>>>>id: 21
--------------
>>id: 143
--------------
>>>>id: 60011
--------------
>>>>id: 60012
--------------
>>>>id: 5299316
--------------
>>>>id: 5712901
--------------
>>>>id: 147
--------------
>>>>id: 148
--------------
>>>>id: 149
--------------
>>>>id: 60010
--------------
最佳答案
function myVarDump($item, $recursion = 0)
{
if(is_array($item))
foreach($item as $key => $value)
{
if(is_array($value))
myVarDump($value, $recursion+1);
else
echo str_repeat('>', $recursion)."$key: $value\n--------------\n";
}
else echo($item);
}
此函数将根据您的请求输出数据,但显然您仍然需要递归才能显示嵌套项。因此,我不完全理解您要解决的问题——也许您需要限制递归?如果是这样,只需在该函数中限制 $recursion
的高度即可,例如:
function myVarDump($item, $recursion = 0, $maxRecursion = 5)
{
if($recursion > $maxRecursion)
echo str_repeat('>>', $recursion)."ERROR: Max recursion $maxRecursion exceeded";
elseif(is_array($item))
foreach($item as $key => $value)
{
if(is_array($value))
myVarDump($value, $recursion+1);
else
echo str_repeat('>', $recursion)."$key: $value\n--------------\n";
}
else echo($item);
}
关于php - 不递归打印数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867479/