Funciones array (1)

Crear un array de un rango determinado:

range($inicio, $fin[,$paso])
$pares=range(2,100,2);
//Letras únicamente:
$lista=range('a','z');

Recorrer un array:

foreach (expresión_array as $valor)
    sentencias
foreach (expresión_array as $clave => $valor)
    sentencias

Rellenar valores en un array:

$input = array(12, 10, 9);

$result = array_pad($input, 5, 0);
// el resultado es array(12, 10, 9, 0, 0)

$result = array_pad($input, -7, -1);
// el resultado es array(-1, -1, -1, -1, 12, 10, 9)

$result = array_pad($input, 2, "noop");
// sin relleno

Eliminar elementos de un array:

$entrada = array("rojo", "verde", "azul", "amarillo");
array_splice($entrada, 2);
// $entrada ahora es array("rojo", "verde")

$entrada = array("rojo", "verde", "azul", "amarillo");
array_splice($entrada, 1, -1);
// $entrada ahora es array("rojo", "amarillo")

$entrada = array("rojo", "verde", "azul", "amarillo");
array_splice($entrada, 1, count($entrada), "naranja");
// $entrada ahora es array("rojo", "naranja")

$entrada = array("rojo", "verde", "azul", "amarillo");
array_splice($entrada, -1, 1, array("negro", "granate"));
// $entrada ahora es array("rojo", "verde",
//          "azul", "negro", "granate")

$entrada = array("rojo", "verde", "azul", "amarillo");
array_splice($entrada, 3, 0, "púpura");
// $entrada ahora es array("rojo", "verde",
//          "azul", "púpura", "amarillo");

Juntar y separar arrays/cadenas

$array = array('apellido', 'email', 'teléfono');
$separado_por_comas = implode(",", $array);

echo $separado_por_comas; // apellido,email,teléfono

$pizza  = "porción1 porción2 porción3 porción4 porción5 porción6";
$porciones = explode(" ", $pizza);
echo $porciones[0]; // porción1
echo $porciones[1]; // porción2

Ejemplos cookies

Poner una cookie:

setcookie('destino',1,time()+86400*30);

Acceder a una cookie (unsafe):

echo $_COOKIE['test']

Acceder a una cookie (safe):

$destino=  filter_input(INPUT_COOKIE, 'destino');

Borrar una cookie:

setcookie('prueba',27,time()-1000);

Ejercicio viajes

viajes

A destacar:

 <h4>Nombre de los viajeros:</h4>
 <?php
 for($i=0;$i<$form['viajeros'];$i++){
 ?>
 <input class="form-control" type="text" name="nombres[]"/>
 <?php
 }
 ?>
 <input type="hidden" name="total" value="<?=$total?>"/>
 <input type="hidden" name="destino" value="<?=$form['destino']?>"/>


----


 $nombres= filter_input(INPUT_POST, 'nombres',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
 
 <h2>Destino: <?=@array("Lima","Logroño","Cancun","Ibiza","Chipre")[$destino-1]?></h2>
 

Ejemplos arrays multidimensionales

$t= creaArray(4, 6);
echo array_to_table($t);

function creaArray($ancho, $alto) {
 for ($i = 0; $i < $alto; $i++) {
 for ($j = 0; $j < $ancho; $j++) {
 $c[$i][$j] = $j + $i * $ancho;
 }
 }
 return $c;
}

 function cuadrado_magico($ancho){
 if ($ancho%2==0) $ancho--;
 $posy=0;
 $posx=floor($ancho/2);
 $cont=1;
 
 while ($cont<=$ancho**2){
 if (empty($c[$posy][$posx])){
 $c[$posy][$posx]=$cont++;
 $posx=($posx+1)%$ancho;
 $posy=($posy-1+$ancho)%$ancho;
 }
 else{
 $posx=($posx-1+$ancho)%$ancho;
 $posy=($posy+2)%$ancho;
 }
 
 }
 return $c;
}

$c= cuadrado_magico(3);

echo array_to_table($c);

$c= cuadrado_magico(5);

echo array_to_table($c);

Arrays multidimensionales en PHP

$b=array(array('A','b'),array('c','d','e','f'),array('g','h','i'));
echo "<pre>";
print_r($b);

echo "</pre>";

echo $b[1][2];
echo "<br/>";
for ($i=0;$i<count($b);$i++){
 for($j=0;$j<count($b[$i]);$j++){
 echo "($i,$j) ".$b[$i][$j]." | ";
 }
 echo "<br/>";
}

foreach($b as $valor){
 foreach($valor as $letra){
 echo $letra."|";
 }
 echo "<br/>";
}


for ($i = 0; $i < 5; $i++)
 for ($j = 0; $j < 5; $j++)
 $c[$i][$j] = $j + $i * 5;

 echo array_to_table($c);
 
function array_to_table($tabla) {
 $res="<table border=1>";
 for ($i = 0; $i < count($tabla); $i++) {
 $res.="<tr>";
 for ($j = 0; $j < count($tabla[$i]); $j++) {
 $res.="<td>" . $tabla[$i][$j] . "</td>";
 }
 $res.="</tr>";
 }
 $res.="</table>";
 return $res;
}

//Mezcla sin sentido, a lo loco:

$tutifruti=array('juan'=>array('a','b','c'),'ana'=>array('c'=>3,'d'=>6,'e'=>8),'rosa'=>array('j','k',array(1,2,3,4)));

var_dump($tutifruti);