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.