Sencillo código en PHP para añadir elementos a un array y ordenarlos

En un post anterior explicábamos como construir una lista tipo SELECT (dinámica) desde un array y recorrerla, con el fin de complementar el trabajo con arrays, en este artículo queremos presentar un sencillo ejemplo con código referente al uso de dos funciones PHP básicas para arrays:

  • array_push: Añade elementos al final de una lista
  • array_unshift: Añade elementos al principio de una lista

Por definición un array está formado por una colección variable o no de elementos, dichos elementos comienzan a numerarse desde el 0 en adelante, de esta forma quedan referenciados por un índice numérico.

0 [enero] 1 [febrero] 2 [marzo] 3 [abril] … (enero ocupa la primera posición del array que corresponde a numeración de índice 0)

Para nuestro ejemplo utilizaremos un array compuesto por ciudades del mundo.

<?php $ciudades = array(‘París’, ‘Nueva York’, ‘Moscú’, ‘Oslo’, ‘Madrid’, ‘Roma’, ‘Lisboa’, ‘Buenos Aires’, ‘Quito’); ?>

Según los expuesto ‘París’ ocupa la posición de índice 0, o lo que es lo mismo para visualizarla tendríamos que escribir:

<?php echo $ciudades[0]; ?>

Para añadir una nueva ciudad al final de nuestro array utilizaríamos por ejemplo:

<?php array_push($ciudades, ‘Londres’); ?>

Así ‘Londres’ pasaría a situarse después de ‘Quito’.

Para añadir una nueva ciudad al principio del array, sería así:

<?php array_unshift($ciudades, ‘Tokio’); ?>

Ahora nuestra lista quedaría así:

‘Tokio’,’París’, ‘Nueva York’, ‘Moscú’, ‘Oslo’, ‘Madrid’, ‘Roma’, ‘Lisboa’, ‘Buenos Aires’, ‘Quito’,’Londres’

Una vez visto el funcionamiento vamos a pasar a un código algo más animado con el fin de poder añadir elementos a nuestro array por formulario y ordenar a la vez el resultado de nuestra lista con las funciones sort (realiza orden ascendente) y rsort (realiza orden descendente).

<html>

<head>

<meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″ />

<title>Tutorial añadir elementos a array, por WebReunidos</title>

</head>

<body>

<?php

$ciudades = array(‘París’, ‘Nueva York’, ‘Moscú’, ‘Oslo’, ‘Madrid’, ‘Roma’, ‘Lisboa’, ‘Buenos Aires’, ‘Quito’);

if($_POST){

if($_POST[‘ciudad1’])  array_push($ciudades, $_POST[‘ciudad1’]);

if($_POST[‘ciudad2’]) array_unshift($ciudades, $_POST[‘ciudad2’]);

switch($_POST[‘ordenar’]){

case 1 : sort($ciudades);

break;

case 2 : rsort($ciudades);

break;

}

}

for ($i=0;$i<sizeof($ciudades);$i++){

echo $ciudades[$i].'<br />’;

}

?>

<form id=»form» name=»form» method=»post» action=»<?php echo $_SERVER[‘PHP_SELF’] ?>»>

<p>Ciudad 1 <input type=»text» name=»ciudad1″ /></p>

<p>Ciudad 2 <input type=»text» name=»ciudad2″ /></p>

<p>Ordenar resultado: <input name=»ordenar» type=»radio» value=»1″ checked=»checked»/>Ascendente   <input type=»radio» name=»ordenar» value=»2″/>Descendente   </p>

<p> <input type=»submit» value=»Enviar» /> </p>

</form>

</body>

</html>

Bien nuestro ejemplo muestra la lista inicial de ciudades tal y como está en el array, y presenta un formulario donde recogeremos los datos de dos ciudades y un orden para mostar el resultado.

Cuando el formulario se envía, ciudad1 se añadirá al final de la lista y ciudad2 se añadirá al principio, luego pasa por un switch donde según la marca de ordenación el resultado será ascendente o descendente.

Si no se introducen datos en los inputs, el resultado sería la lista de ciudades original ordenada.