我需要像这样循环一个数组:
{
"tipo": "AFO",
"codigo": "xxx",
"nombre": "xxx Organización",
"contenidos": [
{
"tipo": "MOD",
"codigo": "xxx",
"nombre": "Organización ...",
"contenidos": [
{
"tipo": "UFO",
"codigo": "xxxx",
"nombre": "Gestión Económico Actividad...",
"contenidos": [
{
"tipo": "UDI",
"codigo": "xxx",
"nombre": "Presupuestos y contabilidad básica de la actividad comercial",
"esudi": "1",
"contenidos": [
{
"tipo": "empty",
"codigo": "empty",
"nombre": "Contenidos",
"contenidos": [
{
"tipo": "HTM",
"codigo": "xxx",
"nombre": "INTRODUCCIÓN"
},
{
"tipo": "HTM",
"codigo": "xxxxx",
"nombre": "OBJETIVOS"
},
{
"tipo": "HTM",
"codigo": "xxxx",
"nombre": "MAPA CONCEPTUAL"
},
{
"tipo": "HTM",
"codigo": "xxx",
"nombre": "1. Concepto y finalidad del presupuesto",
"contenidos": [
{
"tipo": "HTM",
"codigo": "xxx",
"nombre": "1.1. El proceso presupuestario"
},
{
"tipo": "HTM",
"codigo": "xxx",
"nombre": "1.2. Usos, objetivos y funciones del presupuesto"
},
{
"tipo": "HTM",
"codigo": "xxx",
"nombre": "1.3. Clases de presupuestos: de inversión, de ventas, de control"
}
]
},
{
"tipo": "HTM",
"codigo": "xxxx",
"nombre": "2. Clasificación de los presupuestos",
"contenidos": [
{
"tipo": "HTM",
"codigo": "xxxxx",
"nombre": "2.1. El pronóstico de ventas"
},
{
"tipo": "HTM",
"codigo": "xxx",
。 。 。
主要问题在于名为contenidos 的属性,因为我从网络服务接收此数组,而且它的dinamyc,我不知道这个的深度数组(数组数组......) 我和foreach一起尝试但是我已经陷入困境......
这就是我现在所拥有的:
foreach($curso as $key => $value){
echo "clave : " .$key. " , valor : " .$value. "<br>";
if(is_array($value)){
foreach($value as $key2 => $value2){
echo "clave : " .$key2. " , valor : " .$value2. "<br>";
}
}
}
欢迎任何帮助。 谢谢,
答案 0 :(得分:2)
尝试将其放入如下的特定功能/方法中:
function iterateMe($curso)
{
foreach ($curso as $key=>$value) {
// First check if the value as an array
if (is_array($value)) {
// Yes! Let's iterate through it
iterateMe($value);
} else {
// No! Just display the values
echo sprintf("clave: %s, valor: %s <br>", $key, $value);
}
}
}
iterateMe($curso);
答案 1 :(得分:1)
使用此功能查找数组的深度:
function array_depth(array $array) {
$max_depth = 1;
foreach ($array as $value) {
if (is_array($value)) {
$depth = array_depth($value) + 1;
if ($depth > $max_depth) {
$max_depth = $depth;
}
}
}
return $max_depth;
}
然后你可以做一个简单的for循环迭代每个数组:
for ($i = 1; $i <= $max_depth; $i++)