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.

Resumen de privacidad
cookies entreunosyceros

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible.

La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudarnos a comprender qué secciones de la web encuentras más interesantes y útiles.

Nunca almacenamos información personal de ningún tipo.

Tienes toda la información sobre privacidad, derechos legales y cookies en nuestra página sobre la política de privacidad o en la página sobre nuestra política de cookies.

Cookies necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.

Cookies de terceros

Esta web utiliza las siguientes cookies adicionales:

- Mailchimp: Recordar si ya estás suscrito al boletín de noticias y sino ofrecértelo al salir.

- Accesibilidad: Para saber tus ajustes de accesibilidad en cada visita.

- Comentarios: Saber si has leído y aceptado nuestra política de privacidad a la hora de dejar un comentario en la web.

- Google Analytics: Localización para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

- Goggle Adsense: Anuncios personalizados según tu geolocalización y preferencias.

Dejar estas cookies activadas nos permite mejorar nuestra web.

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.