PHP borrado y modificación de matrices

Al igual que para insertar, para borrar elementos de una matriz disponemos de diversas funciones, una de ellas ya la conocemos, se llama unset() y sirve para eliminar por completo un elemento de una matriz, la matriz entera o cualquier otro tipo de variable.
Las que vamos a ver ahora son más específicas para matrices que unset y su uso esta más parametrizado.

Borrar elementos con array_pop y array_shift

Estas dos funciones son analogas, la primera array_pop nos borra el último elemento de una matriz y array_shift nos borra el primer elementos, ambas reciben un sólo parámetro (la matriz de la que borrar) y retornan un mismo valor, el valor del elemento borrardo.

  • mixed array_pop($vector)

Veamos un par de ejemplos de uso

<?php
function mostrar($matriz)
	{
	foreach ($matriz as $indice=>$contenido)
		echo "<p>El indice es: ".$indice." EL contenido es: ".$contenido."</p>";
	}
$matriz=array(0,1,2,3,4,5,6,7,8,9);
echo "<p>".array_pop($matriz)."</p>";
mostrar($matriz);
echo "<p>".array_shift($matriz)."</p>";
mostrar($matriz);
?>

Borrar o sustituir parte de una matriz

PHP nos permite borrar una parte de una matriz o incluso sustituirla por otra. Para ello usaremos la función :

  • array array_splice($vector,$posicion,[$tamanio,$sustitutos])
    • $vector, el la matriz de la que vamos a borrar o sustituir
    • $posición punto en el que empezar a borrar o sustituir, si es positivo lo hará de hacía delante y si es negativo al reves
    • $tamanio, es opcional indica el número de elemento a borrar o sustituir, si no se indica lo hace hasta el final o principio
    • $sustitutos, aquí se envia un vector de sustitutos, es también opcional, si no se envía entonces sólamente borra y no sustituye

Veamos algunos ejemplos de uso

<?php
function mostrar($matriz)
	{
	foreach ($matriz as $indice=>$contenido)
		echo "<p>El indice es: ".$indice." EL contenido es: ".$contenido."</p>";
	echo "<p>___________________________________________________</p>";
	}

$matriz=array(0,1,2,3,4,5,6,7,8,9);
array_splice($matriz,8);
mostrar($matriz);
array_splice($matriz,-2);
mostrar($matriz);
//Vamos a probar los parámetros optativos
array_splice($matriz,-2,1);
mostrar($matriz);
//Para usar sustitutos debemos indicar una posición
array_splice($matriz,0,10,array("uno","dos","tres","cuatro"));
mostrar($matriz);
?>

Eliminar valores repetidos array_unique()

Una función bastante útil sería array_unique, que nos sirve para eliminar valores repetidos. Esta función recibe una matriz y devuelve otra sin los valores repetidos, pero no modifica la matriz original.
Ejemplo de uso

<?php
function mostrar($matriz)
	{
	foreach ($matriz as $indice=>$contenido)
		echo "<p>El indice es: ".$indice." EL contenido es: ".$contenido."</p>";
	echo "<p>___________________________________________________</p>";
	}

$matriz=array(0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9);
mostrar(array_unique($matriz));
//Observar como no se ha modificado el original
mostrar($matriz);
//Ahora si se va a modificar el original
$matriz=array_unique($matriz);
mostrar($matriz);
?>

Ejercicios

Dada esta matriz: array(1,34,56,”casa”,”34″,56,”pedro”,2,5,6,7,12,”Antonio”), haz estas operaciones:

  1. Elimina las cinco primeras posiciones con array_shif y la última con array_pop
  2. Sustituye los cuatro últimos elementos por [111,222,333,111] con array_splice
  3. Elimina los valores repetidos con array_unique
  4. ¿Qué hace array_unique con los valores que sólo son iguales en contenido pero no en tipo?

Originally posted 2011-02-22 18:34:36.

One Response to “ PHP borrado y modificación de matrices ”

  1. educhip dice:

    Muchas gracias por la mención de la función array_unique(), llevaba un buen rato haciendo un script que me eliminara elementos duplicados de un array !!

Deja un comentario