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>