Inicio Apuntes FPApuntes DAW Ejercicio Básico 29 PHP: Mostrar y contar los valores de un array recursivo

Ejercicio Básico 29 PHP: Mostrar y contar los valores de un array recursivo

Publicado por entreunosyceros
Publicado el: Última actualización:

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

Como el sueño se me escapa otra vez, me he puesto a trastear un poco con un ejercicio de PHP que tenía un poco atragantado desde hace unos días. Bien es cierto que poco tiempo le había dedicado hasta hoy. En el ejercicio tratamos un array  recursivo como el que aparece líneas más abajo y realizaremos las operaciones que se piden a continuación.

El tratamiento de este array se hará de una función, asi que lo primero que haremos será crear una función recursiva (verValores) que nos muestre el contenido de un array que a su vez puede contener varios arrays anidados.

La función verValores devolverá un array de dos elementos: el primero contiene el número total de elementos y el segundo será un array escalar donde cada posición mostrará un elemento. El array a utilizar será el siguiente.

$datos = array( 'o' => array( 'oasis','objeto','oso'),</code> <code>                't' => array('te','teatro','toro','milcinco' => array( array('mil', 'cinco'),</code> <code>                      array('one thousand', 'five', array('cielo' => 'rojo','sangre' => 'azul'))</code><code>)</code><code>)</code><code>);

Código para mostrar y contar los valores de un array recursivo

Una vez explicado un poco el ejercicio, ahora va el código. En el explico con los comentarios lo que hace cada una de las líneas.

    <?php
    /*
    Crear una función recursiva (verValores) que nos muestre el contenido de un array que a  su  vez  puede  contener  varios  arrays  anidados.  La  función verValores  devolverá  un array de dos elementos: el primero contiene el número total de elementos y el segundo será un array escalar donde cada posición mostrará un elemento. El array a utilizar será el siguiente.
    */
     
    $contenido=array(); //array global para guardar el contenido
    $retorno=array(); //array global para que devuelva el resultado
     
    //función verValores que recibe un array como parámetro
    function verValores($array){
     
        //array global para contenido
            global $contenido;
        //array global para devolver los valores y el número de valores.
            global $retorno;
        //contador estático para realizar la suma de los valores encontrados
            static $contador=0;
     
     
        //recorremos el array y separamos los índices de los valores
            foreach($array as $key => $value){
                   
          /*en caso de el valor sea un array llamamos otra vez a la función y le pasamos como parámetro el valor*/
                   
                    if (is_array($value)) {
                            verValores($value);
     
            //si no es un array, es un valor  
                    }else{
     
              /*guardamos el valor dentro del array contenido y uso como índice del array el valor que tenga contador*/
                            $contenido[$contador] = $value;
                            //añadimos 1 más al contador para la siguiente vuelta
                $contador++;
                           
                    }
     
            }
           
            $retorno[0]=$contador." valores encontrados: "; //guardamos en la primera posición del array para devolver el valor final del contador
            $retorno[1]=$contenido; //guardamos en la segunda posición del array para devolver el array dónde guardamos el contenido
     
            return $retorno; //se devuelve el array de retorno que mostrará el resultado esperado
    }
     
     
    //Este es el array a evaluar
    $datos = array('o' => array('oasis','objeto','oso'),
                               't' => array('te','teatro', 'toro','milcinco' => array(array('mil', 'cinco'),array('one thousand', 'five',array( 'cielo' => 'rojo','sangre' => 'azul')
                                                                                                                                                                                                                            )
                                                    )
                                                            )
                               );
     
    /*llamamos a la función verValores, le pasamos el array $datos y guardamos lo que devuelve la función dentro de la variable resultado.*/
    $resultado=verValores($datos);
     
     
    //vemos la primera posición del array que devuelve la función verValores
    echo $resultado[0];
    //separamos por comas la segunda posición del array resultado
    $separado_por_comas = implode(", ", $resultado[1]);
    /*imprimimos el contenido de la variable donde almacenamos los valores encontrados en el array*/
    echo $separado_por_comas;
     
     
    ?>

 

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.