PHP Curso Día 15/12/23

Descargar archivo completo TXT
El intérprete de PHP necesita delimitadores para saber el contenido a procesar, para ello usaremos <?php al inicio y ?> al finalizar

	<?php
		...
		codigo php
		...
	?>
	
Todas las líneas en PHP deben terminar en ; como en javascript para indicar el final de la sentencia
El comando ECHO envia a pantalla la información indicada. Podemos usarla con o sin paréntesis. El texto contenido debe ir entre comillas o apóstrofes.

	echo ('Pruebas');
	echo 'mas pruebas';
	echo "<br/>";
	print "Alternativa a echo<br/>";
	print "Como funciona como varios contenidos";
	
"; print "Alternativa a echo
"; print "Como funciona como varios contenidos"; ?>
Al inicio establecemos aquellas variables y constantes a utilizar
la diferencia básica entre variable y constante es la capacidad de cambiar su valor
y a nivel visual las variables tienen un prefijo $

	<?php
		$titulo='Mi pagina php';
		$fecha=date("d/m/Y");
		$hora=date("H:i:s");
		const prueba='mi texto --de-- prueba';
	?>
	
Los comentarios en el código se pueden poner con // al inicio, o bien con #, o bien como en css /* ..... */

//comentario de una linea
#otro comentario para php
/* bloque de comentarios con apertura
Y CIERRE en otra linea */
	
Podemos insertar cualquier tipo de texto, por ejemplo html para que se interprete en el navegador

echo "texto "."mas texto<br/>";
	
"; ?>
usar +, *, - y / para realizar operaciones con números
Las operaciones pueden ser directas dentro del mismo comando, en este caso sumamos 3.54 + 15.21

echo 3.54 + 15.21;
	
Para escribir texto usaremos \n y \r para ejecutar nueva linea o simular retorno de carro
El \ (slash) se utiliza para 'escapar' de la interpretación normal a una procesada por php
En este ejemplo hacemos una variable $texto1 para puego procesar el texto con o sin interprete de html
En el caso de no querer procesar el html pondremos nl2br(var) para que evite procesar el html.
Este ejemplo define una variable texto1 con un texto que incluye retornos

$texto1= "Ejemplo de texto\ncon linea nueva \nusado por el mismo texto
"; echo $texto1; echo nl2br($texto1);
"; $texto1= "Ejemplo de texto\ncon linea nueva \nusado por el mismo texto
"; echo $texto1; echo nl2br($texto1); ?>
PHP permite lanzar directamente código interpretado con

<?='¿que ha pasado?' ?>
<?=25-18*3 ?>
	
Ejemplo de integración de código html en texto a enviar por php.
Se ha incorporado una variable titulo (definido al inicio), que interpreta y sustituye contenido
Ejemplo de integración dos variables (fecha) y (hora) dentro del contenido de texto

echo "<strong>$titulo</strong>"; 
echo "<p>La fecha de hoy es $fecha y la hora es $hora</p>";
	
$titulo"; echo "

La fecha de hoy es $fecha y la hora es $hora

"; ?>
Ejemplo de mostrar variables del entorno php a pantalla como información del sistema. Algunas de estas son: phpinfo, php(INFO_CREDITS)

echo phpversion();
// echo phpinfo();
// echo phpinfo(INFO_CREDITS);
	
Formas de definir una variable: directamente asignando a $variable un valor contenido entre comillas (o apostrofes) si es texto o libre si son números
usando el comando define(variable, valor) para aquellas que sean constantes
poniendo el comando const antes de la variable a definir
NOTA: Las constantes nunca pueden tener $ en su inicio

	$titulo='Mi pagina php';
	$fecha=date("d/m/Y");
	$hora=date("H:i:s");
	const prueba='mi texto --de-- prueba';
	const PI=3.14159;
	define ('unavariable',"PHP VERSION");
	
Valores retornados de las variables:
"; $titulo='Mi pagina php'; echo $titulo."
"; $fecha=date("d/m/Y"); echo $fecha."
"; $hora=date("H:i:s"); echo $hora."
"; const prueba='mi texto --de-- prueba'; echo prueba."
"; const PI=3.14159; echo PI."
"; define ('unavariable',"PHP VERSION") ; echo unavariable."
"; ?>
En este ejemplo primero definimos una variable que luego reutilizamos agregando más texto y demostramos la concatenación de textos en pantalla

	define('otravariable',"PHP VERSION8.xx");
	$nueva=otravariable.'textoagregado';
	echo '<br/>Aqui la constante= ' .prueba;
	echo '<br/>Aqui la otra= ' .otravariable;
	echo '<br/>Aqui la suma de otravariable con texto= ' .$nueva;
	define('PI',3.14159);
	echo '<br/>Valor PI ' .PI;
	
Aqui la constante= ' .prueba; echo '
Aqui la otra= ' .otravariable; echo '
Aqui la suma de otravariable con texto= ' .$nueva; define('PI',3.14159); echo '
Valor PI ' .PI; ?>
Variables y Operaciones con variables
Las operaciones con variables funcionan como en cualquier otro lenguaje de programación
ATENCION: en ECHO el uso de comillas evita ejecutar el intérprete de variables,
mientras que el apóstrofe permite de forma recurrente la interpretación de variables creadas

	$total=123;
	$total=$total+13; //las operaciones son normales como otros lenguajes
	echo $total*10;
	$variable0=13;
	$variable1=5;
	$variable2='variable1';
	$variable3='variable2';
	echo $$$variable3;  //interpreta las variables de forma recurrente resolviendo el contenido de la anterior sin eval
	echo $variable1.$variable2."<br/>";  // punto union de cadenas
	echo $variable0+$variable1."<br/>";  // mas suma numeros, si no hay numeros se la pega
	echo $variable0.$variable1."<br/>"; 
	
"; echo $variable1.$variable2."
"; //punto union de cadenas echo $variable0+$variable1."
"; // mas suma numeros, si no hay numeros se la pega echo $variable0.$variable1."
"; ?>
Diferencia entre PRINT y ECHO
Print imprime una cadena, echo puede imprimir más de una separada por coma
Print retorna el valor 1 al terminar, mientras que echo no retorna valores
print_r imprime el contenido de una variable y var_dump imprime los detalles de la variable y tipos de contenido

	print 'Hola';
	echo 'Hola', 'Hola de nuevo';
	//Se imprime "Hola" y la variable $foo toma el valor 1
	$foo = print 'Hola';
	$foo = array( 5, 0.0, "Hola", false, '' );

	var_dump( $foo );
	//Imprime
	array(5) {
		[0]=> int(5)
		[1]=> float(0)
		[2]=> string(4) "Hola"
		[3]=> bool(false)
		[4]=> string(0) ""
	}

	print_r( $foo );
	//Imprime
	Array (
		[0] => 5
		[1] => 0
		[2] => Hola
		[3] =>
		[4] =>
	)
	$output = print_r( $foo, true );
	
"; echo 'Hola', 'Hola de nuevo'; echo "
"; //Se imprime "Hola" y la variable $foo toma el valor 1 $foo = print 'Hola'; echo "
"; $foo = array( 5, 0.0, "Hola", false, '' ); var_dump( $foo ); echo "
"; print_r( $foo ); echo "
"; $output = print_r( $foo, true ); ?>
ESCAPANDO caracteres como apóstrofes y comillas. Operaciones de números y texto

	echo "It's raining<br/>";
	echo 'It\'s raining<br/>'; //siempre escapar los caracteres coincidentes
	echo 'Mi nombre es \'adriana\'<br/>';
	echo 'Mi nombre es "adriana"<br/>';
	echo "Mi nombre es \"adriana\"<br/>";
	echo 'variable1 = ' .$variable1.'<br/>';
	$fruta='manzana';
	echo "una ".$fruta.'<br/>'; //con comillas tenemos interpretacion de variables contenidas
	echo "dos {$fruta}s".'<br/>'; //si ponemos apostrofe, ese contenido se libera sin interprete
	echo "\u{1F600}";  //caracteres unicode interprete directo
	echo "$fruta[0]".'<br/>'; //se puede utilizar directamente [] para tomar según matriz el caracter
	echo "$fruta[0]"."$fruta[3]"."<br/>"; //para tomar varios hay q asignar cada letra
	echo (1+"1")."<br/>"; // el texto si puede lo interpreta como numero si agrega texto da error por falta de interprete
	// echo (1."1")."<br/>";  //esto deberia encadenar pero da un error por numero inicial
	// tipos de datos
	// int enteros
	// float  con decimales
	// string  texto
	// boolean 0/1 false/true
	// object  objetos
	// sobre una clase se crean instancias que generan el objeto
	
"; echo "It's raining
"; echo 'It\'s raining
'; //siempre escapar los caracteres coincidentes echo 'Mi nombre es \'adriana\'
'; echo 'Mi nombre es "adriana"
'; echo "Mi nombre es \"adriana\"
"; echo 'variable1 = ' .$variable1.'
'; $fruta='manzana'; echo "una ".$fruta.'
'; //con comillas tenemos interpretacion de variables contenidas echo "dos {$fruta}s".'
'; //si ponemos apostrofe, ese contenido se libera sin interprete echo "\u{1F600}"; //caracteres unicode interprete directo echo "$fruta[0]".'
'; //se puede utilizar directamente [] para tomar según matriz el caracter echo "$fruta[0]"."$fruta[3]"."
"; //para tomar varios hay q asignar cada letra echo (1+"1")."
"; // el texto si puede lo interpreta como numero si agrega texto da error por falta de interprete // echo (1."1")."
"; //esto deberia encadenar pero da un error por numero inicial ?>
Tipos de variables y valores

	// boolean 0/1 false/true
	$sino=true;
	if ($sino == true){print "El valor es true
";} $sino=1; if ($sino == true){print "El valor es (1) true
";} $sino=0; //la condición usa ! para decir que NO es verdad el valor indicado if (!$sino){print "El valor es (0) false
";} // int enteros $lado=14; $area=$lado*$lado; // los numeros enteros se limitan en PHP por las variables PHP_INT_SIZE y PHP_INT_MAX print "Un cuadrado de lado $lado cm \ntiene un área de $area cm2
"; // float con decimales $numerodec=3.; // los decimales se identifican con tener el . en el número sin falta de decimales var_dump($numerodec); print("<br/>"); $numerodec=$numerodec + .1623; print "Resultado= $numerodec<br/>"; $numerodec=12**3; // el doble asterisco se interpreta como un exponencial 12 elevado a 3 print ("12.4^3 = $numerodec <br/>"); // string texto $saludo="Hola Don Pepito"; print "$saludo<br/>"; $saludo[0]="M"; // modificar contenido de la cadena usándola como matriz $saludo[9]="B"; $saludo[11]="n"; print "$saludo<br/>";
";} $sino=1; if ($sino == true){print "El valor es (1) true
";} $sino=0; //la condición usa ! para decir que NO es verdad el valor indicado if (!$sino){print "El valor es (0) false
";} // int enteros $lado=14; $area=$lado*$lado; // los numeros enteros se limitan en PHP por las variables PHP_INT_SIZE y PHP_INT_MAX print "Un cuadrado de lado $lado cm \ntiene un área de $area cm2
"; // float con decimales $numerodec=3.; // los decimales se identifican con tener el . en el número sin falta de decimales var_dump($numerodec); print("
"); $numerodec=$numerodec + .1623; print "Resultado= $numerodec
"; $numerodec=12**3; // el doble asterisco se interpreta como un exponencial 12 elevado a 3 print ("12.4^3 = $numerodec
"); // string texto $saludo="Hola Don Pepito"; print "$saludo
"; $saludo[0]="M"; // modificar contenido de la cadena usándola como matriz $saludo[9]="B"; $saludo[11]="n"; print "$saludo
"; // object objetos // sobre una clase se crean instancias que generan el objeto ?>
Variables de Matrices y almacenamiento en ellas

	$ciudades_esp []='Madrid'; // las matrices se redimensionan en la medida que agregas datos
	$ciudades_esp []='Oviedo'; // utiliza siempre []
	$ciudades_esp []='Lugo';
	$ciudades_esp []='Salamanca';
	echo $ciudades_esp [1].$ciudades_esp [3]." La primera y tercera<br/>";
	foreach ($ciudades_esp as $ciudad) {
		echo $ciudad . "<br>";
	}
	$ciudades['ESP']=$ciudades_esp; //asociamos a una variable en una matriz, el valor de una matriz completa (poco operativo)
	
"; $ciudades['ESP']=$ciudades_esp; foreach ($ciudades_esp as $ciudad) { echo $ciudad . "
"; } ?>
Variables de Matrices y almacenamiento en ellas
No es necesario dimensionar la matriz, se asigna directamente los valores insertados con formato JSON
Evitar llamar a un valor no existente, por ejemplo $matriz[5] si solo tiene 4 elementos
Nota: las matrices cuentan desde primer valor como 0, por lo que el quinto valor sería [4]

$nombres = ["Ana", "Bernardo", "Carmen"];
print $nombres[1]."<br/>"
	
" ?>
En Matrices podemos asignar valores directamente o con notación =>
En la matriz cada asignación puede ser definida por números o textos
Los índices en el caso de números pueden ser positivos y negativos

$cuadrados[3] = 9;
$cuadrados[5] = 25;
$cuadrados[10] = 100;
// Matriz definida con la notación =>
$cuadrados = [3 => 9, 5 => 25, 10 => 100];
$matriz[10] = "diez";
$matriz[-1] = "menos uno";
$matriz["uno"] = 1;
$matriz["ciento veinte"] = 120;
// Matriz definida con la notación =>
$matriz = [10 => "diez", -1 => "menos uno", "uno" => 1, "ciento veinte" => 120];
print $matriz[ciento veinte];
print "<br/>";
$edades = ["Andrés" => 20, "Bárbara" => 19, "Camilo" => 17];
print "Bárbara tiene $edades[Bárbara] años
"; print "Bárbara tiene " . $edades["Bárbara"] . " años
"; print "Camilo tiene {$edades["Camilo"]} años
";
$cuadrados = [3 => 9, 5 => 25, 10 => 100]; print "$cuadrado[5]
"; $matriz[10] = "diez"; $matriz[-1] = "menos uno"; $matriz["uno"] = 1; $matriz["ciento veinte"] = 120; // Matriz definida con la notación => $matriz = [10 => "diez", -1 => "menos uno", "uno" => 1, "ciento veinte" => 120]; print $matriz["ciento veinte"]; print "
"; $edades = ["Andrés" => 20, "Bárbara" => 19, "Camilo" => 17]; print "Bárbara tiene $edades[Bárbara] años
"; print "Bárbara tiene " . $edades["Bárbara"] . " años
"; print "Camilo tiene {$edades["Camilo"]} años
"; ?>
Matriz con varias dimensiones, podremos asignar directamente los valores usando la notación inicial

	$matriz = [[20, 30, 40], [100, 200, 300]];
	// En varias líneas para facilitar la lectura:
	$matriz = [
	  [20, 30, 40],
	  [100, 200, 300]
	];
	// Definiendo los elementos de primer nivel:
	$matriz[0] = [20, 30, 40];
	$matriz[1] = [100, 200, 300];
	// Definiendo los elementos de segundo nivel:
	$matriz[0][0] = 20;
	$matriz[0][1] = 30;
	$matriz[0][2] = 40;
	$matriz[1][0] = 100;
	$matriz[1][1] = 200;
	$matriz[1][2] = 300;
	
Matrices de varias dimensiones con uso en cadenas de texto
con print_r podemos recuperar el contenido completo de un array

	$datos = [
	["nombre" => "pepe", "edad" => 25, "peso" => 80],
	["nombre" => "juan", "edad" => 22, "peso" => 75]
	];
	// usamos corchetes {} para que se interprete previamente o bien el punto para concatenar
	print "{$datos[1]["nombre"]} pesa {$datos[1]["peso"]} kilos<br/>";
	print "\n";
	print " " . $datos[0]["nombre"] . " tiene " . $datos[0]["edad"] . " años<br/>";
	print "<pre>"; print_r($datos); print "</pre>";
	
"pepe", "edad" => 25, "peso" => 80], ["nombre" => "juan", "edad" => 22, "peso" => 75] ]; // usamos corchetes {} para que se interprete previamente o bien el punto para concatenar print "

{$datos[1]["nombre"]} pesa {$datos[1]["peso"]} kilos

\n"; print "\n"; print "

" . $datos[0]["nombre"] . " tiene " . $datos[0]["edad"] . " años

\n"; print "
\n"; print_r($datos); print "
\n"; ?>