Categoría: PHP
Ejemplos arrays
<?php $a=[1,2,3,4]; $suma=0; while(!empty($a)){ $suma+=array_pop($a); } echo $suma; print_r($a); echo "<hr>"; echo contarPalabras("Hola que tal, yo estoy muy bien"); echo "<hr>"; echo palabraMasLarga("en un lugar de la mancha"); function contarPalabras($cadena){ return count(explode(" ",$cadena)); } function palabraMasLarga($cadena){ $palabras= explode(" ", $cadena); $larga=""; foreach($palabras as $palabra){ if(strlen($palabra)>strlen($larga)){ $larga=$palabra; } } return $larga; }
Funciones array (II)
Pasar de cadena a array y viceversa:
Ejemplos:
function muestraTabla($tabla) { echo "<pre>"; print_r($tabla); echo "</pre>"; } $cadena = "hola que tal estamos"; $tabla = explode(' ', $cadena); muestraTabla($tabla); $lista = "jamon,pollo,bistec,fuet"; $carne = explode(",", $lista); muestraTabla($carne); $letras = str_split($lista); muestraTabla($letras); echo implode('-',$tabla)."<br/>"; echo implode('***-***',$carne)."<br/>"; echo implode('.',$letras)."<br/>";
Funciones array (I)
Número de elementos:
Poner y quitar elementos:
Del final:
Quitar:
array_pop()
Poner:
array_push()
Del principio:
Quitar:
array_shift()
Poner:
array_unshift()
Ejemplos:
function muestraTabla($tabla) { echo "<pre>"; print_r($tabla); echo "</pre>"; } $tabla = array(1, 2, 3, 4, 5); $tabla = array("a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 5, ); muestraTabla($tabla); array_pop($tabla); muestraTabla($tabla); array_push($tabla, 99); muestraTabla($tabla); array_shift($tabla); muestraTabla($tabla); array_unshift($tabla, 200); muestraTabla($tabla);
Soluciones ejercicios
<?php $a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; echo sumaDiagonal($a); //Ejercicio 1 function sumaArray($array) { $suma = 0; foreach ($array as $fila) { foreach ($fila as $valor) { $suma += $valor; } } return $suma; } //Ejercicio 2 function sumaColumna($array, $columna) { $suma = 0; for ($i = 0; $i < count($array); $i++) { $suma += $array[$i][$columna]; } return $suma; } function sumaFila($array, $fila) { $suma = 0; for ($i = 0; $i < count($array[$fila]); $i++) { $suma += $array[$fila][$i]; } return $suma; } function sumaDiagonal($array) { $suma = 0; for ($i = 0; $i < count($array); $i++) { $suma += $array[$i][$i]; } return $suma; }
Ejercicios array multidimensionales
1.- Crear una función sumaArray que nos devuelva la suma del array que le pasemos como parámetro. Ejemplo:
$a=[[1,2],[3,4]]; echo sumaArray($a); //Imprime 10
2.- Crear una función sumaColumna a la que le pasamos un array y una columna y nos devuelve la suma de esa columna. Ejemplo:
$a=[[1,2],[3,4]]; echo sumaColumna($a,0); //Imprime 4 (1+3)
3.- Crear una función sumaFila a la que le pasamos un array y una fila y nos devuelve la suma de esa fila. Ejemplo:
$a=[[1,2],[3,4]]; echo sumaFila($a,0); //Imprime 3 (1+2)
4.- Crear una función sumaDiagonal a la que le pasamos un array y nos devuelve la suma de la diagonal. Ejemplo:
$a=[[1,2,3],[4,5,6],[7,8,9]]; echo sumaDiagonal($a); //Imprime 15 (1+5+9)
Ejemplo array dinámico
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form> Introduzca número alumnos: <input type="text" name="numero"> <input type="submit"> </form> <?php $numero = filter_input(INPUT_GET, "numero"); if (!empty($numero)) { ?> <form> Introduzca los nombres: <?php for ($i = 0; $i < $numero; $i++) { ?> <p><input type="text" name="alumno[]"></p> <?php } ?> <input type="submit"> </form> <?php } $alumnos = filter_input(INPUT_GET, "alumno", FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); if (!empty($alumnos)) { foreach ($alumnos as $alumno) { echo "<p>$alumno</p>"; } } ?> </body> </html>
Ejemplo arrays inputs
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php $valor = filter_input(INPUT_GET, "valor", FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); print_r($valor); ?> <form> <?php for ($i = 0; $i < 3; $i++) { for ($j = 0; $j < 3; $j++) { ?> <input type="text" size="3" name="valor[<?= $i ?>][<?= $j ?>]"> <?php } echo "<br>"; } ?><input type="submit"> </form> </body> </html>
Arrays asociativos
<?php $m=[[1,2,3], [4,5,6,7,8], [7,8,9]]; print_r($m); echo $m[1][1]; //Imprime 5 (fila 1, columna 1) echo $m[1][3]; //Imprime 7 (fila 1, columna 3) echo "<hr>"; //recorrer array foreach($m as $c1=>$fila){ foreach($fila as $c2=>$v){ echo "($c1,$c2) $v "; } echo "<br>"; } echo "<hr>"; $ma=[["nombre"=>"Ana","mail"=>"p@p.com","ciudad"=>"BCN"], ["nombre"=>"Eva","mail"=>"e@p.com","ciudad"=>"BCN"], ["nombre"=>"Rosa","mail"=>"r@p.com","ciudad"=>"BCN"], ]; print_r($ma); echo $ma[1]['mail']; //El mail de Eva (fila 1, columna 'mail' echo "<hr>"; //recorrer array foreach($ma as $c1=>$fila){ foreach($fila as $c2=>$v){ echo "($c1,$c2) $v "; } echo "<br>"; } echo "<hr>"; $aa=["gerencia"=>["nombre"=>"Ana","mail"=>"p@p.com","ciudad"=>"BCN"], "administracion"=>["nombre"=>"Eva","mail"=>"e@p.com","ciudad"=>"BCN"], "fábrica"=>["nombre"=>"Rosa","mail"=>"r@p.com","ciudad"=>"BCN"], ]; print_r($aa); echo $aa['administracion']['mail']; //El mail de Eva (fila 'administracion', columna 'mail' echo "<hr>"; //recorrer array foreach($aa as $c1=>$fila){ foreach($fila as $c2=>$v){ echo "($c1,$c2) $v "; } echo "<br>"; } echo "<hr>"; $a = []; $n = 4; $cont = 1; for ($i = 0; $i < $n; $i++) { for ($j = 0; $j < $n; $j++) { $a[$i][$j] = $cont; $cont++; } } print_r($a); echo $a[2][1]; //¿Qué imprime esto? $usuarios = [["Nombre" => "Eva", "Aficiones" => ["Musica", "Cine"]], ["Nombre" => "Ana", "Aficiones" => ["Baile", "Cine"]], ["Nombre" => "Rosa", "Aficiones" => ["Deportivas" => ["Fútbol", "Tenis"], "Culturales" => ["Música", "Teatro"]]], ]; echo $usuarios[1]["Aficiones"][0]; //Baile echo $usuarios[2]["Aficiones"]["Culturales"][0]; //Música
Juego de las monedas
https://culturacientifica.com/2013/06/21/el-juego-de-penney-tirando-monedas-con-curioso-resultado/
session_start(); $reset = filter_input(INPUT_GET, 'reset'); if (empty($_SESSION['jugador']) || !empty($reset)) { $_SESSION['jugador'] = 0; } if (empty($_SESSION['maquina']) || !empty($reset)) { $_SESSION['maquina'] = 0; } $jugada = filter_input(INPUT_GET, 'jugada'); if (!empty($jugada)) { $maquina = ['CCC' => 'XCC', 'CCX' => 'XCC', 'CXC' => 'CCX', 'CXX' => 'CCX', 'XCC' => 'XXC', 'XCX' => 'XXC', 'XXC' => 'CXX', 'XXX' => 'CXX']; $mijugada = $maquina[$jugada]; function tirada() { return mt_rand(0, 1) == 1 ? 'C' : 'X'; } $tiradas = tirada() . tirada() . tirada(); while (substr($tiradas, -3) != $jugada && substr($tiradas, -3) != $mijugada) { $tiradas .= tirada(); } if (substr($tiradas, -3) == $jugada) { $_SESSION['jugador'] ++; $texto = "Has ganado ¡Has hecho trampa, seguro!"; } else { $_SESSION['maquina'] ++; $texto = "Te he ganado, soy el mejor"; } } ?><!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h1>El juego de las monedas. Vas a perder.</h1> <h2>Jugador:<?= $_SESSION['jugador'] ?> Máquina:<?= $_SESSION['maquina'] ?> </h2> <form> <p>Elige tu jugada</p> <select name="jugada"> <option>CCC</option> <option>CCX</option> <option>CXC</option> <option>CXX</option> <option>XCC</option> <option>XCX</option> <option>XXC</option> <option>XXX</option> </select> <input type="submit"> <input type="submit" name="reset" value="Reiniciar"> </form> <?php if (isset($jugada)) { ?> <h2>Tu jugada: <?= $jugada ?> Mi jugada: <?= $mijugada ?></h2> <?php ?> <h3><?= substr($tiradas, 0, -3) ?><mark><?= substr($tiradas, -3) ?></mark></h3> <?php ?> <h2><?= $texto ?></h2> <?php } ?> </body> </html>