PHP (IAW)
OOP
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/32435d15-6dbb-4acf-84aa-b6149be3d0e8/Funciones_P
HP_cadenas.pdf
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8af06d3b-051e-40aa-b06b-77b9be27bc85/php_compara
r_cadenas.pdf
Asignación de variables (HTML → PHP)
Para asignarle un valor introducido en un formulario HTML a una variable PHP, tendremos que escribir un INPUT en el
HTML y coger como action del formulario el nombre de nuestro programa PHP.
Ahora vamos con el código PHP.
Si por ejemplo queremos guardar un número o nombre del formulario y pasarlo a PHP, escribimos lo siguiente
$A = $_POST["NombreVariableHTML"];
Ejemplo: Si queremos realizar una factura y pasar de HTML un nombre de usuario y 2 tipos de unidades, la primera que se
cobrará a 10€ cada una, y la segunda, que será a 12€ cada una.
// Creación de variables.
$A = $_POST["NombreUsuario"];
$B = $_POST["UnidadesA"];
$C = $_POST["UnidadesB"];
// Cálculo de precios
$PrecioUnidadesA = $B * 10;
$PrecioUnidadesB = $C * 12;
// Mostrar resultados
echo "Nombre: ",
echo "Unidades A = ", $B , " a 10 euros cada una. Total: " , $PrecioUnidadesA, "€";
echo "Unidades B = ", $C , " a 12 euros cada una. Total: " , $PrecioUnidadesB, "€";
También podemos declarar constantes con la siguiente sintaxis:
define("nombre", valor);
PHP (IAW) 1
Cadenas
Creación
Para crear una cadena en PHP, añadimos el símbolo dolar para crear una variable con el nombre que queramos y le
damos el valor.
<?php
$UnaCadena = "Hola, soy una cadena";
?>
Reemplazar
Para reemplazar unos caracteres en una cadena, utilizamos la función str_replace(”caracteresACambiar”, “nuevaCadena”,
$variableCadena, $contarReemplazos)
<?php //Ejemplo funciones básicas aprenderaprogramar.com
$texto = "El dijo: es tarde ahora, pero es mejor si hay tres";
echo str_replace("es", "**", $texto, $reemplazos );
echo '<br/>Se han realizado: '.$reemplazos. ' reemplazos<br/>';
echo $texto;
?>
Mayúscula y minúscula
Para convertir todos los caracteres a mayúsculas o minúsculas, podemos utilizar la función strtolower($cadena) y
mayúsculas strtoupper($cadena)
<?php //Ejemplo funciones básicas aprenderaprogramar.com
$cadena = "EstO eS UnA cadeNA de CARActeres";
echo strtolower($cadena);
echo "<br />";
echo strtoupper($cadena);
?>
Contar apariciones
Para contar el número de apariciones utilizamos la función count_chars($cadena, $opcionInt)
<?php //Ejemplo count_chars aprenderaprogramar.com
$cadena = 'es jueves';
$miArray = count_chars ( $cadena, 1);
foreach ($miArray as $indiceNum => $veces) {
echo 'Letra: '.chr($indiceNum).' , encontrada '. $veces.' veces<br/>';
}
?>
Otra función interesante es substr_count($cadena, $subcadena), que nos devuelve el número de veces que aparece la
subcadena dentro de la cadena.
<?php //Ejemplo curso PHP aprenderaprogramar.com
$cadena1 = 'Pedro Juan Luis Marco Luis Pedro Juan Luis Pedro';
$cadena2 = 'Luis';
echo 'Luis aparece '.substr_count($cadena1, $cadena2). ' veces'
?>
Comparación
Para hacer una comparación entre 2 cadenas, podemos utilizar la función strcmp($cadena1,$cadena2), siendo tanto
variables como cadenas introducidas a mano.
PHP (IAW) 2
<?php
strcmp($cadena1, $cadena2);
?>
Añadir a una cadena
Para añadir a una cadena, usaremos la función str_pad($cadena, longitud,
Más funciones
FUNCIÓN UTILIDAD EJEMPLOS
strlen($cadena) Devuelve la longitud o número de caracteres de la cadena
Si no se especifica $opcNumCar devuelve la subcadena
substr ($cadena, entre la posición $inicio y el fin de cadena siendo la
$inicio, posición inicial la cero. Si se especifica $opcNumCar extrae
$opcNumCar) $opcNumCar caracteres desde la posición $inicio
(inclusive).
$saludo = "hoy es viernes"; ucfirst($saludo);
ucfirst($cadena); Devuelve la cadena con la primera letra en mayúsculas
//Hoy es viernes
Devuelve la cadena con cada una de sus palabras con la $saludo = "hoy es viernes"; echo
ucwords($cadena);
primera letra en mayúsculas ucwords($saludo); //Hoy Es Viernes
Devuelve la posición en que comienza la subcadena a
strpos ($cadena ,
partir de la posición inicial (cero) si no se especifica $saludo = "hoy es viernes"; echo
$subCadena,
$opcPosInicio, o a partir de la posición $opcPosInicio si se strpos($saludo, "es"); //4
$opcPosInicio )
especifica. Si no se encuentra la subcadena devuelve false.
Si no se especifica $opcCaracteres, devuelve la cadena $saludo = "*** hoy es viernes ***"; echo
eliminando espacios en blanco, tabuladores, saltos de línea trim($saludo, "*"); //hoy es viernes Nota: puede
trim ($cadena,
y retornos de carro del principio y final de la cadena. Si se no funcionar como se espera debido a juego de
$opcCaracteres)
especifica $opcCaracteres, se eliminan los caracteres caracteres, configuración local y configuración
especificados. del servidor.
Si no se especifica $opcCaracteres, devuelve la cadena $saludo = "*** hoy es viernes ***"; echo
eliminando espacios en blanco, tabuladores, saltos de línea ltrim($saludo, "*"); //hoy es viernes *** Nota:
ltrim ($cadena,
y retornos de carro del principio de la cadena. Si se puede no funcionar como se espera debido a
$opcCaracteres)
especifica $opcCaracteres, se eliminan los caracteres juego de caracteres, configuración local y
especificados. configuración del servidor.
$saludo = "*** hoy es viernes ***"; echo
Si no se especifica $opcCaracteres, devuelve la cadena
rtrim($saludo, "*"); //*** hoy es viernes Nota:
rtrim ($cadena, eliminando espacios en blanco, tabuladores, saltos de línea
puede no funcionar como se espera debido a
$opcCaracteres) y retornos de carro del final de la cadena. Si se especifica
juego de caracteres, configuración local y
$opcCaracteres, se eliminan los caracteres especificados.
configuración del servidor.
chop Igual que rtrim
str_repeat($cadena, Devuelve la cadena repetida $numVeces siendo éste un $saludo = 'hola '; str_repeat($saludo, 3); //hola
$numVeces) número entero. hola hola
Devuelve la subcadena desde la primera aparición de
strstr ($cadena, $desde (incluida) hasta el final si no se especifica
$saludo = "hoy es viernes"; echo strstr($saludo,
$desde, opcBoolean ó este es false. Si $opcBoolean es true
"es", false); //es viernes
$opcBoolean) devuelve la subcadena desde el inicio hasta la primera
aparición de $desde (excluida).
strchr Igual que strstr
Devuelve el carácter correspondiente al código numérico
chr ($ascii) echo chr(65). ' es la salida'; // A es la salida
entero $ascii según el código ascii
Bucles
Bucle For
Los bucles en PHP se realizan igual que en JS, C++, Java, etc.
PHP (IAW) 3
Escribimos la sintaxis de la siguiente manera
<?php
for($IteranteIniciado; condicion, iteracion){
// ---------- Codigo ---------- //
}
?>
<!-- EJEMPLO -->
<?php
for ($i = 1; $i <= 5; $i++){
echo "El numero es: $i<br>";
}
?>
Bucle While
El bucle while se utiliza cuando no sabemos el número exacto de veces que vamos a ejecutar el bucle.
Este se ejecutará mientras se cumpla nuestra condición
while(condición){
// Código
}
Por ejemplo, si queremos imprimir en pantalla los 10 primeros números naturales (empezando en 0)
<?php
$num = 0;
while($num < 10){
echo $num;
$num++;
}
?>
Ahora intentamos sacar los 5 primeros números pares
<?php
n = 1;
while(n < 6){
echo $n*2;
n++;
}
?>
Ejercicio: Dado el intervalo [-250,1000], todos los números comprendidos entre -200 y -100, se impriman por pantalla.
Todos los números entre -20 y 100, salgan los pares de dicho rango. Entre el 101 y el 800, no hacer nada y finalmente,
entre 801 y 1000, sacar los múltiplos de 3. Hacer con bucle for y con bucle while
<?php
echo "-------------- Esto es con bucle for --------------<br>";
for($i = -250; $i <= 1000; $i++){
if($i > -201 && $i < -99){
echo $i . " ";
}else if(($i > -21) && ($i < 101) && ($i % 2 == 0)){
echo $i . " ";
}else if($i > 800 && $i <= 1000 && ($i % 3 == 0)){
echo $i . " ";
}
echo "<br><br>";
echo "-------------- Esto es con bucle while --------------<br>";
$num = -250;
while($num <= 1000){
if($num > -201 && $num < -99){
echo $num . " ";
}else if(($num > -21) && ($num < 101) && ($num % 2 == 0)){
PHP (IAW) 4
echo $num . " ";
}else if($num > 800 && $num <= 1000 && ($num % 3 == 0)){
echo $num . " ";
}
$num++;
}
?>
Bucle do while
La diferencia entre este bucle y el while tradicional, es que este se ejecuta como mínimo 1 vez, lo que lo hace un bucle
perfecto para realizar un menú.
La sintaxis es la siguiente
do{
// Codigo
}while(condicion);
Ejercicios propuestos
Mostrar tu nombre un total de 1000 veces utilizando solo 3 bucles y cada uno debe ser diferente (for, while y do while)
<?php
$num = 0;
$contador = 0;
do{
for($i = 0; $i < 10; $i++){
$num2 = 0;
while($num2 < 10){
echo "Hector ";
$num2++;
$contador++;
}
}
$num++;
}while ($num < 10);
echo "<br>";
echo "<center>";
echo "El nombre se muestra un total de: " . $contador . " veces.";
echo "</center>";
?>
Concatenación
Para concatenar una String se utiliza el punto (”.”). Por ejemplo, para concatenar una salida echo
$num = 0;
echo "Este es un número: " . $num;
Salida:
Este es un número: 0
Condicionales
Sentencia if
La sentencia if en PHP es como en el resto de lenguajes, ya que la sintaxis es igual.
<?php
if(condicion){
// Aqui introducimos el código.
PHP (IAW) 5
}
?>
💡 ¡IMPORTANTE! En este lenguaje, el código de los bucles y condicionales se ponen entre llaves. Aunque si es
para una sola sentencia, no hace falta poner las llaves.
Ejemplo: Crear un programa que represente los n primeros números naturales
<?php
// Parámetro pasado del HTML mediante formulario.
$n = $_POST["N"];
// Creación del bucle
for ($i = 1; $i <= $n; $i++){
$par = 2 * $i;
$impar = $par - 1;
echo "Los n primeros pares son " , $par;
echo "Los n primeros impares son " , $impar;
?>
Sentencia Switch
La sentenica Switch la utilizamos cuando queremos simplificar un if. Si nosotros tenemos una variable y dependiendo
del valor de dicha variable se va a realizar una acción u otra.
La sintaxis es la siguiente
switch(<variable>){
case valor1:
// Código
case valor2:
// Código
case valor3:
// Código
.....
case valorN:
// Código
}
Funciones
Funciones internas
Una función puede ser externa o interna al programa principal. Al hacerla externa, tendremos que crear una librería y hacer
referencia desde nuestro programa principal.
Para declarar una función es de la siguiente manera
<?php
function nombreFuncion(parámetros){
// Código
}
?>
Para hacer una llamada a la función “hola”, tendremos que poner
hola();
La declaración de la función no importa en qué parte del documento se haga, es decir, podemos llamar a la función al
principio y en otra parte de PHP hacer la llamada. No es recomendable pero es posible hacerlo.
PHP (IAW) 6
Funciones externas
Una función externa es aquella a la que se hace una llamada desde otro documento. Para ello, tendremos que importar la
librería.
Para importarla, en nuestro programa principal, pondremos al principio
include ("nombreFichero.php");
Ejemplo de función externa
PHP (IAW) 7
📚 Programa que introduzcamos sueldo bruto de una persona y su categoría.
Si la categoría es A, el sueldo bruto - 25%; si la categoría es B, el sueldo bruto - 22%;
si es C, el sueldo bruto - 18%; si es D, sueldo bruto - 15%; y si es N, el IRPF es el introducido por el usuario
desde el programa principal.
Debe hacerse de manera externa al programa principal.
Resuelto
Formulario
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form style="text-align: center;" action="FuncionesExt.php" method="post">
<p><h3>Cálculo de un Salario Neto dependiendo de la categoría.</h3></p>
<p><input type="text" name="sueldo" placeholder="Salario Base">
<input type="text" name="IRPF" placeholder="IRPF(en caso N)"></p>
<p>
<strong>Categoría</strong>
</p>
<p><select name="cat"></p>
<option value="selecciona" style="text-align: center;">--------Seleccionar--------</option>
<option value="CatA" name="">A</option>
<option value="CatB" name="">B</option>
<option value="CatC" name="">C</option>
<option value="CatD" name="">D</option>
<option value="CatN" name="">N</option>
</select>
<p><br></p>
<input type="submit">
</form>
</body>
</html>
Programa principal
<?php
include "Libreria.php";
$sueldoBruto = $_POST['sueldo'];
$IRPF = $_POST['IRPF'];
$categoria = $_POST['cat'];
# Con if
// if($categoria == "CatA"){
// echo "El sueldo neto es: " . CatA($sueldoBruto) . "€.";
// }else if($categoria == "CatB"){
// echo "El sueldo neto es: " . CatB($sueldoBruto) . "€.";
// }else if($categoria == "CatC"){
// echo "El sueldo neto es: " . CatC($sueldoBruto) . "€.";
// }else if($categoria == "CatD"){
// echo "El sueldo neto es: " . CatD($sueldoBruto) . "€.";
// }else if($categoria == "CatN"){
// echo "El sueldo neto es: " . CatN($sueldoBruto, $categoria) . "€.";
// }
# Con switch
switch($categoria){
case "CatA":
echo "El sueldo neto es: " . CatA($sueldoBruto) . "€.";
break;
case "CatB":
echo "El sueldo neto es: " . CatB($sueldoBruto) . "€.";
break;
case "CatC":
echo "El sueldo neto es: " . CatC($sueldoBruto) . "€.";
break;
case "CatD":
echo "El sueldo neto es: " . CatD($sueldoBruto) . "€.";
break;
case "CatN":
PHP (IAW) 8
echo "El sueldo neto es: " . CatN($sueldoBruto, $IRPF) . "€.";
break;
}
?>
Librería
<?php
function catA($a){
return $a - ($a * 0.25);
}
function catB($a){
return $a - ($a * 0.22);
}
function catC($a){
return $a - ($a * 0.18);
}
function catD($a){
return $a - ($a * 0.15);
}
function catN($a, $i){
return $a - ($a * ($i / 100));
}
?>
Ejemplos de funciones
<?php
function factorial($n){
if ($n == 0){
return 1;
}else{
return $n * factorial($n - 1);
}
?>
<?php
/* Funciones útiles */
function cargarArray($array, $MAX_POS){
for($i = 0; $i < $MAX_POS; $i++){
$nums[] = rand(-20,20);
}
return $nums;
}
function mostrarArray($array){
for($i = 0; $i < count($array); $i++){
print($array[$i] . "\t");
}
}
?>
Matrices o Arrays
Documentación
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e17f678e-659c-4f89-930a-556fba968573/Arrays
Unidimensionales.pdf
PHP (IAW) 9
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1cb92a01-84b4-422e-80cd-50ae77c11335/Array
sBidimensionales.pdf
Declaración
Para declarar una matriz o array, primero deberemos declararlo.
Para declarar un array en PHP, utilizaremos la siguiente sintaxis $Nombre = array()
$Array = array();
En una matriz PHP, podemos almacenar valores de diferentes tipos, es decir, podemos tener numéricos y cadenas en el
mismo array.
Mostrar
Para mostrar un dato específico de un array, tendremos que hacer echo $array[posicion]
echo $Array[3]
Para sacar el contenido de todos los datos de un array, podemos utilizar un bucle foreach, que es un bucle propio de PHP.
Es recomendable para cuando el contenido es de tipo texto. Si quisiéramos imprimir valores numéricos, sería mejor el
bucle for tradicional.
Lo que hace un bucle Foreach, es sacar para cada posición el valor almacenado.
La sintaxis del bucle foreach es la siguiente
foreach ($array as $clave ⇒ $variable){
// Codigo
}
Si quisiéramos sacar los nombres de los autores de un array junto a sus claves
$Nombre = array[]
foreach ($Nombre as $clave => $autor){
echo El autor de este libro se llama: . $clave . y su clave es . $clave
}
Recorrer un array
Recorrer un array nos permite tanto la carga como la descarga de la matriz.
Para recorrer un array, es necesario utilizar un bucle.
Inicialmente utilizaremos el bucle for, pero tenemos un par más que son más útiles según
PHP tiene una caracterísitca: a la hora de cargar los datos en la matriz, puede dejarse la posición en blanco, ya que
este lenguaje autoincrementa la posición.
// Carga de la matriz
for($i = 0; $i < 100; $i++){
$matriz[$i] = rand(-100,100);
}
// Carga de la matriz autoincrementada
for($i = 0; $i < 100; $i++){
$matriz[] = rand(-100,100);
}
Bucle Foreach
PHP (IAW) 10
Para recorrer un array como diccionario, utilizamos la sintaxis de para cada clave del array, se muestra el valor
foreach($array as $clave => $valor){
echo $clave . $valor;
}
Array Indexados
Un array indexado es un array normal.
Arrays Asociados
Los arrays asociados son prácticamente un diccionario, que guarda una clave y un valor para esa clave.
Para hacerlo creamos una clave y direccionamos con ⇒ al valor
$mineral = array(
'dorado' => 'Oro',
'plateado' => 'Plata',
'brillante' => 'Diamante'
)
Arrays multidimensionales
Podemos meter un array dentro de un array.
Para ello creamos un array con claves y que esas claves se dirijan a otro array
$fruta = array(
'naranja' => array(
'propiedad' => 'algo',
'color' => 'naranja'
)
'limon' => array(
'propiedad' => 'otro',
'color' => 'amarillo'
)
)
echo $fruta['naranja']['color'];
Ejercicios de Arrays
PHP (IAW) 11
📚 Cargar un array llamado numero de N posiciones introducidas por teclado o con números del 10 al 100 con
valores de -5 a 5.
a) Sacar a pantalla el contenido de las posiciones pares del Array.
b) Asignar a una matriz llamada impar el contenido de las posiciones impares
c) Tanto para la carga como la descarga, no se puede utilizar el bucle for
d) Se leerá todo el contenido del array número (de 0 a N) y acumularemos en una variable "par" el contenido de
las posiciones pares
y en un acumulador "impar", el contenido de las posiciones impares. Sacar también qué acumulador es mayor.
Solución
PHP
<?php
$posiciones = $_POST['posiciones'];
if (empty($posiciones)){
$posiciones = rand(10,100);
}
$array = array();
$impar = array();
// Carga del array
$i = 0;
while($i < $posiciones){
$array[$i] = rand(-5,5);
$i++;
}
// Mostrar
printf("El array tendrá un total de [%d] números.", $posiciones);
$j = 0;
$impar = array();
$acumimpar = 0;
printf("<br>Array completo: <br>");
while($j < $posiciones){
// Mostrar el array completo
printf("Posición [%2d]: %2d <br>", $j + 1, $array[$j]);
// Guardar las posiciones impares
if ($j % 2 == 0){
$impar[] = $array[$j];
$acumimpar += $array[$j];
}
$j++;
}
// Mostrar posiciones pares
$acumpar = 0;
$k = 0;
echo "<br>Posiciones pares:<br>";
while($k < $posiciones){
if($k % 2 != 0){
printf("Posición [%2d]: %2d <br>", $k - 1, $array[$k] );
$acumpar += $array[$k];
}
$k++;
}
// Mostrar posiciones impares
$acumpar = 0;
$l = 0;
echo "<br>Posiciones impares:<br>";
while($l < count($impar)){
if($l % 2 != 0){
printf("Posición [%2d]: %2d <br>", $l, $array[$l] );
$acumpar += $array[$l];
}
$l++;
}
printf("Suma total de pares: %d Suma total de impares: %d", $acumpar, $acumimpar);
echo "<br>";
if($acumimpar > $acumpar){
printf("El acumulador mayor es: %s [%d]", "Impar", $acumimpar);
}else if($acumimpar < $par){
PHP (IAW) 12
printf("El acumulador mayor es: %s [%d]", "Par", $acumpar);
}else{
printf("El acumulador mayor es: %s [%d]", "Ambos tienen mismo valor", $acumpar);
}
?>
Formulario
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form style="text-align: left;" action="Array.php" method="post">
<p>
A continuación, introduzca el número total de posiciones que tendrá el Array. Dejar vacío para genera
un Array entre 10 y 100.
</p>
<p><input type="number" name="posiciones" placeholder="Posiciones totales"><br></p>
<p><br></p>
<input type="submit">
</form>
</body>
</html>
Ficheros
Nosotros trataremos con ficheros secuenciales y directos. Hay más como el indexado pero no los utilizaremos.
Tipos
Secuencial
Los registros se almacenan en bloques uno tras otro en orden de entrada, sin dejar espacios y con la misma
naturaleza. Esto se realiza hasta el EOF (End Of File).
Al abrir, el puntero apuntará al primer registro. Este puntero se va incrementando según se vayan introduciendo los
datos.
Esto a su vez, se dividirá en bloques.
La ventaja de estos ficheros es que se almacenan en dispositivos de almacenamiento externos (disco duro, nube) y
se guarda la información aunque se apague el dispositivo.
La desventaja viene a la hora de leer una ubicación en específico, ya que para acceder a él, tendremos que recorrer
todos los anteriores.
Código
Antes de todo, guardamos en el php las variables de los datos que queremos almacenar.
Para realizar operaciones en un fichero podemos hacer:
Escritura
Después, para abrir el fichero utilizamos la función fopen(’fichero’, ‘letra’)
$fichero = fopen('datos.dat', 'a');
Y para escribir con fwrite(fichero, expresion a crear)
fwrite($fichero, "LoQueQuieresEscribir");
PHP (IAW) 13
Lectura
Para la lectura del fichero, utilizamos la función
fscanf(NombreFichero, “comoMostrarDatos”, variable1, variable2);
$fichero = fopen('NombreFichero', 'r');
// Ahora, para leerlo
$leido = fscanf($fichero, "%s\t%d\n", $nombre, $edad);
Directo / Aleatorio
Los registros no están divididos por bloques y se almacenan en posiciones con un campo clave para localizarlo.
Estos no se pueden ordenar.
Ventaja: Se puede acceder rápidamente a registros aislados gracias a las claves.
Desventajas: Para leer una cantidad masiva de posiciones, tendrá que hacerse con funciones matemáticas. Sin
embargo, se producirán colisiones y pérdidas en al memoria.
Ejercicios
PHP (IAW) 14
📚 Ecuación de segundo grado.
<?php
/*
Crear un fichero secuencial llamado "ecuacion" en el que guardaremos los valores de a, b y c
de 1000 valores cada una que estarán entre -10 y 10. Cálculo de las 1000 ecuaciones
de segundo grado de forma que todos los resultados que no sean complejos, se guarden además en otro fichero
llamado "bueno", los valores de a, b, c, resultado1 y resultado2 y mostrándo el fichero en pantalla.
*/
function segundoGrado($a, $b, $c){
$resultado = array();
$raiz = (pow($b, 2) - (4 * $a * $c)); // DISCRIMINANTE
$res1 = (-$b + sqrt($raiz)) / (2 * $a);
$res2 = (-$b - sqrt($raiz)) / (2 * $a);
if($raiz > 0){
$resultado[0] = $res1;
$resultado[1] = $res2;
}elseif($raiz == 0){
$resultado[0] = $res1;
}else{
$resultado[0] = 0;
$resultado[1] = 0;
$resultado[2] = 0;
}
return $resultado;
function lectura($fichero, $bueno){
fscanf($fichero, "%d\t%d\t%d\n", $a, $b, $c);
while(!feof($fichero)){
$resultado = segundoGrado($a, $b, $c);
if(count($resultado) == 2){
fwrite($bueno, "$a\t$b\t$c\t$resultado[0]\t$resultado[1]\n");
}elseif(count($resultado) == 1){
fwrite($bueno, "$a\t$b\t$c\t\t$resultado[0]\n");
}else{
fwrite($bueno, "$a\t$b\t$c\tSolución imaginaria\n");
}
fscanf($fichero, "%d\t%d\t%d\n", $a, $b, $c);
}
fclose($fichero);
function mostrar(){
$fichero = fopen('bueno.dat', 'r');
fscanf($fichero, "%d\t%d\t%d\n", $a, $b, $c);
while(!feof($fichero)){
$ecuacion = fgets($fichero);
echo "$ecuacion <br>" ;
fscanf($fichero, "%d\t%d\t%d\n", $a, $b, $c);
}
fclose($fichero);
}
define("MAX_EC", 1000);
$fichero = fopen('ecuacion.dat', 'w');
$bueno = fopen('bueno.dat', 'w');
// Carga de los números
for($i = 0; $i < MAX_EC; $i++){
$a = rand(-10,10);
while($a == 0){
$a = rand(-10,10);
}
$b = rand(-10,10);
$c = rand(-10,10);
while($c == 0){
$c = rand(-10,10);
}
fwrite($fichero, "$a\t$b\t$c\n");
}
fclose($fichero);
PHP (IAW) 15
$num = fopen('ecuacion.dat', 'r');
lectura($num, $bueno);
fclose($bueno);
mostrar();
?>
PHP (IAW) 16