在php中动态读取嵌套数组
我需要在不知道数组外观的情况下读取嵌套数组 比如,在php中动态读取嵌套数组,php,arrays,Php,Arrays,我需要在不知道数组外观的情况下读取嵌套数组 比如, $data = array( 'Data1_lvl1' => array( 'Data1_lvl2' => "value", 'Data2_lvl2' => array( 'Data1_lvl3' =>
$data = array(
'Data1_lvl1' => array(
'Data1_lvl2' => "value",
'Data2_lvl2' => array(
'Data1_lvl3' => "value"
)
),
'Data2_lvl1' => 'value'
);
需要格式化为字符串,如:
但是数组可以是任意大小,其中可以包含任意数量的嵌套数组。一种方法是使用类似于以下函数的递归遍历数组:
<?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);
一种方法是递归遍历数组,其函数类似于:
<?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);
如果您只想输出数组元素的名称,那么这个递归函数就可以了
您的数据:
$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);
功能:
$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);
函数array2str($array,$str){
foreach($key=>$val的数组){
if(is_数组($val)){
$str.=$key.'/';
array2str($val,$str);
}
}
echo$str.“
”;
返回$str;
}
array2str(数据);
正如您所见,在浏览器中查看结果时,脚本本身会与
进行回显,以打断行。如果您只想输出数组元素的名称,则此递归函数将完成此操作
$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);
您的数据:
$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);
功能:
$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);
函数array2str($array,$str){
foreach($key=>$val的数组){
if(is_数组($val)){
$str.=$key.'/';
array2str($val,$str);
}
}
echo$str.“
”;
返回$str;
}
array2str(数据);
正如您所见,在浏览器中查看结果时,脚本本身会与
进行回显,以打断该行。$data=array(
$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);
'Data1_lvl1'=>数组(
'Data1_lvl2'=>“值”,
'Data2_lvl2'=>数组(
“数据1_lvl3”=>“值”
)
),
“数据2_lvl1”=>“值”
);
函数printary($array)
{
foreach($key=>$value的数组)
{
回声$key.'/';
if(是_数组($value))
{
printArray($value);
}否则{
回声“
”;
}
}
}
打印阵列(数据);
$data=array(
'Data1_lvl1'=>数组(
'Data1_lvl2'=>“值”,
'Data2_lvl2'=>数组(
“数据1_lvl3”=>“值”
)
),
“数据2_lvl1”=>“值”
);
函数printary($array)
{
foreach($key=>$value的数组)
{
回声$key.'/';
if(是_数组($value))
{
printArray($value);
}否则{
回声“
”;
}
}
}
打印阵列(数据);
使用该功能:
<?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);
}
}
}
使用该功能:
<?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);
}
}
}
您可以使用PHP内置的数组\u walk\u recursive
函数。请参阅,您可以使用PHP的内置array\u walk\u recursive
函数。参考