我需要读取嵌套数组,而不知道数组的外观。
例如;
$data = array(
'Data1_lvl1' => array(
'Data1_lvl2' => "value",
'Data2_lvl2' => array(
'Data1_lvl3' => "value"
)
),
'Data2_lvl1' => 'value'
);
需要格式化为以下字符串:
但是数组可以是任意大小,其中包含任意数量的嵌套数组。
答案 0 :(得分:2)
如果你只想输出数组元素的名称,那么这个递归函数就可以了。
您的数据:
$data = array(
'Data1_lvl1' => array(
'Data1_lvl2' => "value",
'Data2_lvl2' => array(
'Data1_lvl3' => "value"
)
),
'Data2_lvl1' => 'value'
);
<强>功能:强>
function array2str($array, $str) {
foreach($array as $key => $val) {
if (is_array($val) ) {
$str .= $key . '/';
array2str($val, $str);
}
}
echo $str.'<br />';
return $str;
}
array2str($data);
正如您所看到的那样,脚本在使用<br />
进行ECHO时会在浏览器中查看结果时断行。
答案 1 :(得分:2)
$data = array(
'Data1_lvl1' => array(
'Data1_lvl2' => "value",
'Data2_lvl2' => array(
'Data1_lvl3' => "value"
)
),
'Data2_lvl1' => 'value'
);
function printArray($array)
{
foreach ($array as $key=>$value)
{
echo $key.'/';
if (is_array($value))
{
printArray($value);
} else {
echo '<br>';
}
}
}
printArray($data);
答案 2 :(得分:1)
一种方法是递归遍历数组,其功能类似于:
<?php
function f($d, $str = '') {
foreach ($d as $key => $val) {
if (is_array($val)) f($val, $str . '/' . $key); // If this element is array parse next level
else print_r($str . '/' . $key . '/'); // Output current string or do what you need to do with it..
}
}
$data = array(
'Data1_lvl1' => array(
'Data1_lvl2' => "value",
'Data2_lvl2' => array(
'Data1_lvl3' => "value"
)
),
'Data2_lvl1' => 'value'
);
f($data);
答案 3 :(得分:0)
使用该功能:
<?php
function print_tree ($data, $prefix = '', &$index = 1) {
foreach($data as $key => $datum) {
echo $index++ . '. ' . ($new_prefix = $prefix . $key . '/') . PHP_EOL;
if (is_array($datum)) {
print_tree ($datum, $new_prefix, $index);
}
}
}
我得到了
- Data1_lvl1 /
- Data1_lvl1 / Data1_lvl2 /
- Data1_lvl1 / Data2_lvl2 /
- Data1_lvl1 / Data2_lvl2 / Data1_lvl3 /
- Data2_lvl1 /
醇>