informaticaPC

Tutorial de PHP

Ordenar un array, invertir, combinar, extraer elementos...

Ordenar un array

Para ordenar un array disponemos de la función de PHP sort():

<?php
    $aDias = array("Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo");
    sort( $aDias );

    // El array queda: "Domingo", "Jueves", "Lunes", "Martes", "Miércoles", "Sábado", "Viernes"
    print_r( $aDias );
?>

Descargar ejemplo

El segundo parámetro es opcional, y sirve para indicar el modo de ordenación:

  • SORT_REGULAR: compara los elementos normalmente (sin cambiar el tipo de dato).
  • SORT_NUMERIC: compara los elementos de forma numérica.
  • SORT_STRING: compara los elementos como cadenas de texto.
  • SORT_LOCALE_STRING: compara ítems como cadenas, basándose en la localización actual.

También se puede usar para ordenar números:

<?php
    $aNumeros = array(10, 11, 8, 103, 99, 54);
    sort( $aNumeros );

    // El array queda: 8, 10, 11, 54, 99, 103
    print_r( $aNumeros );
?>

Descargar ejemplo

Para ordenar descendentemente usaremos la función rsort():

<?php
    $aDias = array("Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo");
    $aNumeros = array(10, 11, 8, 103, 99, 54);

    rsort( $aDias );
    rsort( $aNumeros );

    // El array queda: "Viernes", "Sábado", "Miércoles", "Martes", "Lunes", "Jueves", "Domingo"
    print_r( $aDias  );

    echo "<br/>";

    // El array queda: 103, 99, 54, 11, 10, 8
    print_r( $aNumeros );
?>

Descargar ejemplo

Para ordenar arrays asociativos en PHP usaremos las funciones asort() y arsort().

Más información

Vea también: [ sort() ] - [ rsort() ]

Invertir el orden de los elementos

Con la función de PHP array_reverse() obtendremos un array con los elementos en orden inverso (no modifica el array original):

<?php
    $aDias = array("Pepe", "Ana", "Marta", "Alfredo", "Rosa");

    // El array queda: "Rosa", "Alfredo", "Marta", "Ana", "Pepe"
    print_r( array_reverse( $aDias ) );
?>

Descargar ejemplo

Más información

Vea también: [ array_reverse() ]

Obtener las claves de un array

La función array_keys() nos devolverá un array con las claves existentes en un array asociativo.

Si indicamos un valor en el segundo parámetro, se devolverá un array con las claves o posiciones que contengan dicho valor:

<?php
    $aColores1 = array( "color1" => "rojo", "color2" => "verde", "color3" => "azul", "color4" => "verde" );
    $aColores2 = array( 37, "Pedro", "color1" => "rojo", "color2" => "verde", "color3" => "azul" );

    // Devuelve: Array ( [0] => color1 [1] => color2 [2] => color3 [3] => color4 )
    print_r( array_keys($aColores1) );

    echo "<p/>";

    // Devuelve: Array ( [0] => color2 [1] => color4 )
    print_r( array_keys($aColores1, "verde") );

    echo "<p/>";

    // Devuelve: Array ( [0] => 0 [1] => 1 [2] => color1 [3] => color2 [4] => color3 )
    print_r( array_keys($aColores2) );

    echo "<p/>";
?>

Descargar ejemplo

Más información

Vea también: [ array_keys() ]

Comprobar si un array asociativo contiene una determinada clave

La función array_key_exists() nos será útil cuando necesitemos averiguar si un array asociativo contiene una clave:

<?php
    $aColores = array( "color1" => "rojo", "color2" => "verde", "color3" => "azul" );

    if( array_key_exists("color3", $aColores) == true )
        echo "La clave 'color3' existe en el array asociativo.<br/>";

    if( array_key_exists("color9", $aColores) == false )
        echo "La clave 'color9' NO existe en el array asociativo.";
?>

Descargar ejemplo

Combinar los elementos de varios arrays

La función array_merge() devuelve un array con todos los elementos de los arrays que le pasemos como parámetro:

<?php
    $aDias1 = array("Lunes", "Martes", "Miércoles");
    $aDias2 = array("Jueves", "Viernes", "Sábado", "Domingo");

    $aDias = array_merge( $aDias1, $aDias2 );

    // El array queda: "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"
    print_r( $aDias );
?>

Descargar ejemplo

IMPORTANTE: en caso de usar arrays asociativos que tienen nombres de claves iguales, el valor de dicha clave será el del último encontrado (el array resultante no podrá tener más de una clave con el mismo nombre).

<?php
    $aColores1 = array( "color1" => "rojo", "color2" => "verde", "color3" => "azul" );
    $aColores2 = array( "color1" => "AMARILLO", "color4" => "celeste", "color5" => "magenta" );

    $aColores = array_merge( $aColores1, $aColores2 );

    // Devuelve: Array ( [color1] => AMARILLO [color2] => verde [color3] => azul [color4] => celeste [color5] => magenta )
    print_r( $aColores );
?>

Descargar ejemplo

Observa que en ambos arrays se repite la clave 'color1', cuyo valor será el encontrado en el último array pasado como parámetro en array_merge().

Más información

Vea también: [ array_merge() ]

Extraer parte de un array

Si necesitamos extraer parte de un array usaremos la función de PHP array_slice(), que devuelve el número de elementos a partir de la posición especificada.

En el segundo parámetro se indica a partir de qué posición se extraerán los elementos, y en el tercer parámetro cuántos elementos se desean extraerán (si se omite este parámetro se extraerán el resto de elementos hasta el final):

<?php
    $aNombres1 = array("PEPE", "ALFREDO", "ALBERTO", "CARMEN", "MARÍA", "TERESA");

    $aNombres2 = array_slice( $aNombres1, 0, 3);

    // Devuelve: "PEPE", "ALFREDO", "ALBERTO"
    print_r( $aNombres2 );
?>

Descargar ejemplo

Más información

Vea también: [ array_slice() ]

Comprobar diferencia entre arrays

La función de PHP array_diff() nos devolverá un nuevo array con los valores en el primer array pasado como parámetro que no estén también en el resto de los arrays indicados:

<?php
    $aNumeros1 = array( 11, 22, 33 );
    $aNumeros2 = array( 11, 33, 55);

    $aColores1 = array( "color1" => "rojo", "color2" => "verde", "color3" => "azul", "color4" => "naranja" );
    $aColores2 = array( "color1" => "verde", "color2" => "azul", "color3" => "amarillo" );
    $aColores3 = array( "color1" => "rojo" );

    $aDiferencias1 = array_diff( $aNumeros1, $aNumeros2 );
    $aDiferencias2 = array_diff( $aColores1, $aColores2, $aColores3 );

    // Devuelve: Array ( [1] => 22 )
    print_r( $aDiferencias1 );

    echo "<br />";

    // Devuelve: Array ( [color4] => naranja )
    print_r( $aDiferencias2 );
?>

Descargar ejemplo

Como puedes comprobar, puede ser usado tanto en arrays normales como en arrays asociativos.

Si bien array_diff() realiza la comprobación sobre los valores de los arrays, también disponemos de la función array_diff_key() la cual comprueba las claves en un arrays asociativos:

<?php
    $aColores1 = array( "color1" => "rojo", "color2" => "verde", "color3" => "azul", "color4" => "naranja" );
    $aColores2 = array( "color1" => "verde", "color2" => "azul", "color3" => "amarillo" );

    $aDiferencias = array_diff_key( $aColores1, $aColores2 );

    // Devuelve: Array ( [color4] => naranja )
    print_r( $aDiferencias );
?>

Descargar ejemplo

Más información

Vea también: [ array_diff() ] - [ array_diff_key() ]

Crear una cadena de texto a partir de un array

Con la función implode() obtendremos los valores contenidos en los elementos de un array como una cadena de texto, especificando como primer parámetro el texto delimitador entre ellos (si no lo indicamos se usará una cadena vacía):

<?php
    $aNombres = array("PEPE", "ALFREDO", "ALBERTO", "CARMEN", "MARÍA", "TERESA");

    // Devuelve la cadena: "PEPE - ALFREDO - ALBERTO - CARMEN - MARÍA - TERESA"
    echo implode( " - ", $aNombres );
?>

Descargar ejemplo

Más información

Vea también: [ implode() ]

Crear un array a partir de una cadena

La función explode() devuelve un array a partir de los valores contenidos en una cadena de texto, indicando los caracteres separadores como primer parámetro:

<?php
    $nombres = "PEPE, ALFREDO, ALBERTO, CARMEN, MARÍA, TERESA";

    $aNombres = explode( ", ", $nombres );

    // Devuelve: Array ( [0] => PEPE [1] => ALFREDO [2] => ALBERTO [3] => CARMEN [4] => MARÍA [5] => TERESA )
    print_r( $aNombres );

    // Devuelve: "aNombres[1] es [ALFREDO]"
    echo "<p>aNombres[1] es [".$aNombres[1]."]</p>";
?>

Descargar ejemplo

Otra función de la que disponemos es str_split(), en la que especificaremos el número de caracteres a extraer de la cadena, que serán después guardados en cada posición del array en PHP:

<?php
    $nombres = "Cursos gratis";

    $aCaracteres1 = str_split( $nombres );
    $aCaracteres2 = str_split( $nombres, 4 );

    // Devuelve: Array ( [0] => C [1] => u [2] => r [3] => s [4] => o [5] => s [6] => [7] => g [8] => r [9] => a [10] => t [11] => i [12] => s )
    print_r( $aCaracteres1 );

    echo "<br />";

    // Devuelve: Array ( [0] => Curs [1] => os g [2] => rati [3] => s )
    print_r( $aCaracteres2 );
?>

Descargar ejemplo

Observa que si no indicamos el segundo parámetro se extraerá carácter a carácter.

Más información

Vea también: [ explode() ] - [ str_split() ]

Primera página Anterior Siguiente Última página
Usamos cookies para ofrecerte una experiencia mejorada, el continuar navegando supone que aceptas su uso