循环遍历数组数组

时间:2014-06-04 15:57:10

标签: php arrays

我需要像这样循环一个数组:

{
    "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>";


                }
            }
        }

欢迎任何帮助。 谢谢,

2 个答案:

答案 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++)