PHP Curso Día 18/12/23

Usando matrices de una dimensión, asignación directa de valores en la matriz

	$numeros=array('uno','dos','tres');
	// echo $numeros[2];
	foreach($numeros as $numero){
		echo $numero.' ';
	}
	
uno dos tres
Matriz con doble valor, indice y valor. Asignación directa

	$clavenumeros=array('uno'=>1,'dos'=>2,'tres'=>3);
	foreach($clavenumeros as $numero => $valor){
		echo "$numero tiene $valor".' ';
	}
	
uno tiene 1 dos tiene 2 tres tiene 3
Asignando valores numéricos no es posible utilizar el dato como array o texto
por el contrario si tenemos un texto si podemos recorrer el contenido como un array de caracteres

	$x=123;
	$y = $z = 0; //asignación múltiple de mismo valor
	echo $x;
	$x="123";
	echo $x[0];
	
1231
Ejercicio: cargar un array con valores y mostrar todo el contenido

	$capitales =array('Madrid','Oviedo','Lugo','Toledo');
	foreach ($capitales as $nombres){
		echo $nombres.' ';
	}
	echo "
La capital que ocupa la posición 1 es $capitales[1]"
Madrid Oviedo Lugo Toledo
La capital que ocupa la posición 1 es Oviedo
Matrices anidadas, la matriz por defecto tiene una dimensión
en este ejemplo vamos a ver cómo asignar simultáneamente valores de matriz a cada valor de matriz inicial
para recuperar el valor indicaremos la variable y el número o identificador que deseamos recuperar

Nota: en un array aunque la posición del primer nivel es 0 y 1, debemos recuperarlo por el identificador que se asigna.
Es decir si ponemos echo $ciudades[0][1] nos dará un error al no poder identificarlo por la definición


	$ciudades =array (
		'ESPAÑA'=> array ('Madrid','Oviedo','Toledo','Coruña', 'León'),
		'ITALIA' => array ('Roma', 'Palermo', 'Milan', 'Venecia', 'Pisa')
	);
	echo $ciudades['ESPAÑA'][1];
	
Oviedo
Tamaño de una matriz usando el comando SIZEOF() (equivale a UBOUND en Asp)

	$poblaciones =array ('Madrid','Oviedo','Toledo','Coruña', 'León', 'Salamanca', 'Zamora');
	echo "Las poblaciones son ".sizeof($poblaciones);
	echo '<br/>';
	$ciudades =array (
		'ESPAÑA'=> array ('Madrid','Oviedo','Toledo','Coruña', 'León', 'Sevilla'),
		'ITALIA' => array ('Roma', 'Palermo', 'Milan', 'Venecia', 'Pisa')
	);
	echo "Las ciudades son ".sizeof($ciudades);
	echo '<br/>';
	echo "Las ciudades de España son ".sizeof($ciudades['ESPAÑA']);
	
Las poblaciones son 7
Las ciudades son 2
Las ciudades de España son 6
Matrices agrupadadas. Si queremos hacer podemos crear una array de arrays para ello
solo poner cada elemento sin asignar identificador, asi asumirán el valor de orden de entrada

	$ciudades =array (
	array ('Madrid','Oviedo','Toledo','Coruña', 'León', 'Sevilla'),
	array ('Roma', 'Palermo', 'Milan', 'Venecia', 'Pisa')
	);
	echo $ciudades[0][2];
	echo '<br/>';
	echo sizeof($ciudades[1]);
	
Toledo
5
Bucle FOR ... ENDFOR
Indicaremos en el for el desde, hasta, e incremento. El incremento por defecto es $var++
usamos notacion $var+=3 para incrementar de 3 en 3

	$ciudades =array (
		'ESPAÑA'=> array ('Madrid','Oviedo','Toledo','Coruña', 'León', 'Sevilla'),
		'ITALIA' => array ('Roma', 'Palermo', 'Milan', 'Venecia', 'Pisa')
	);
	for ($i=0;$i<sizeof($ciudades['ESPAÑA']);$i+=2):
		echo $ciudades['ESPAÑA'][$i];
		echo "<br/>";
	endfor;
	
Madrid
Toledo
León
Comparación completa de dos valores

	$result=$x <=> $y;  // compara e indica que resultado es correcto
	echo "resultado=".$result; //-1 es menor, 0 es igual, 1 es mayor
	
resultado=1
Operaciones aritméticas con variables. Suma, resta, multiplica, divide, exponente
Incrementos y decrementos sobre la variable, antes y después de mostrar el valor

	$x=13;
	$y=18;
	$suma=$x+$y;
	$resta=$x-$y;
	$multi=$x*$y;
	$division=$x/$y;
	$exponente=pow($x,5);
	$base=2**3;
	$base1=pow(2,3);
	$preinc= ++$x;
	$postinc= $y++;
	echo "Suma: ".$suma."<br/>";
	echo "Resta: ".$resta."<br/>";
	echo "Multiplica: ".$multi."<br/>";
	echo "Division: ".$division."<br/>";
	echo "Exponente usando pow de $x elevado a 5: ".$exponente."<br/>";
	echo "Exponente de 2 elevado al cubo ".$base." o también ".$base1."<br/>";
	echo "Preincremento ".$preinc." ".$x."<br/>";
	echo "PostIncremento ".$postinc." ".$y."<br/>";
	echo " Seguido ".$y." ".$y++." ".$y."<br/>";
	echo "Decrementando pre".--$x." ".--$x." actual x=".$x." post ".$x--." ".$x--." final=".$x"<br/>";
	echo "Resto de ".$y." entre ".$x." resultado=".$y % $x;
	$x=5;
	$y=7;
	$x += $y; // sumar al valor x el valor y equivale a x=x+y
	echo "<br/>Resultado x=".$x." y=".$y;
	
Suma: 31
Resta: -5
Multiplica: 234
Division: 0.72222222222222
Exponente usando pow de 14 elevado a 5: 371293
Exponente de 2 elevado al cubo 8 o también 8
Preincremento 14 14
PostIncremento 18 19
Seguido 19 19 20
Decrementando pre13 12 actual x=12 post 12 final=11
Resto de 20 entre 11 resultado=9

Resultado x=12 y=7
Operadores comparadores.
El == es igual, != es distinto, < menor, > mayor, <= menor o igual, >= mayor o igual,
&& Y (and), || O (or), ! negación

	//los valores a comparar son x=13 y=18
	$x=13;
	$y=18;
	if ($x == $y){
		echo "Si cumple la condición";
	} else {
		echo "No cumple la condición";
	}
	if ($x != $y){echo "<br/>Si cumple la condición";} else {echo "<br/>No cumple la condición";}
	if ($x <= $y){echo "<br/>Si cumple la condición";} else {echo "<br/>No cumple la condición";}
	if ($x > $y){echo "<br/>Si cumple la condición";} else {echo "<br/>No cumple la condición";}
	if (($x!=$y)&&($x<$y)){echo "<br/>Si cumple x<>y Y x<y";} else {echo "<br/>No cumple";}
	$pupitres=201;
	if ($pupitres<100){
		echo "<br/>-Si cumple la condición";
	} elseif(($pupitres>=100)&&($pupitres<200)) {
		echo "<br/>-Entre 100 y 200";
	} else {
		echo "<br/>-Mayor 200";
	}
	

No cumple la condición
Si cumple la condición
Si cumple la condición
No cumple la condición
Si cumple x<>y Y x<y
Si cumple x<>y Y x>y
-Mayor 200
Operadores Lógicos
AND o && , OR o || , xor (o excluyente), ! negado (falso)

	
$a and $b And (y) true si tanto $a como $b son true.
$a or $b Or (o inclusivo) true si cualquiera de $a o $b es true.
$a xor $b Xor (o exclusivo) true si $a o $b es true, pero no ambos.
! $a Not (no) true si $a no es true.
$a && $b And (y) true si tanto $a como $b son true.
$a || $b Or (o inclusivo) true si cualquiera de $a o $b es true.
Sentencia IF...ELSEIF...ELSE...ENDIF formato :
Nuevo formato de presentación de la condición if-elseif-else. El bloque ELSEIF puede repetirse las veces necesarias
Las condiciones pueden agregarse con el formato if ((condicion) operador (condicion)) tantos como sea necesario
ver el bloque de operadores en otro ejemplo

	$a=5;
	$b=7;
	if ($a > $b):  // atento a la secuencia con dos puntos en cada bloque
		echo $a." es mayor que ".$b;
	elseif ($a == $b): // Tenga en cuenta la combinación de las palabras.
		echo $a." igual ".$b;
	else:
		echo $a." no es ni mayor ni igual a ".$b;
	endif;   // fijar el final de la sentencia
	
5 no es ni mayor ni igual a 7
Sentencia IF...ELSEIF...ELSE...ENDIF formato {}
La versión son corchetes opera de la misma forma. Lo que no debe ser mezclado es el formato puntos con el corchete

	$a=5;
	$b=7;
	if ($a > $b){  // versión con corchetes
		echo $a." es mayor que ".$b;
	} elseif ($a == $b){ // cada comparación debe estar entre paréntesis
		echo $a." igual ".$b;
	} else {
		echo $a." no es ni mayor ni igual a ".$b;
	}   // no precisa de final de bloque, cada corchete realiza la limitación
	
5 no es ni mayor ni igual a 7
Estructura de control de switch

	$aleatoria=rand(0,5);
	echo "Evaluamos ".$aleatoria."<br/>";
	switch ($aleatoria){
		case 0:
		case 1:
			echo "Es menor o igual a 1<br/>";
			break;  // necesario para indicar que debe terminar de comparar y salir
		case 2:
		case 3:
		case 4:
			echo "Entre 2 y 4<br/>";
			break;
		default:  // para casos alternativos usar este valor
			echo "Es otro número seguro que 5<br/>";
	}
	
Evaluamos 1
Es menor o igual a 1