Página php tabla de multiplicar
Página PHP generación cuadrados mágicos
Examen BD
Ejemplos arrays multidimensionales
$t= creaArray(4, 6); echo array_to_table($t); function creaArray($ancho, $alto) { for ($i = 0; $i < $alto; $i++) { for ($j = 0; $j < $ancho; $j++) { $c[$i][$j] = $j + $i * $ancho; } } return $c; } function cuadrado_magico($ancho){ if ($ancho%2==0) $ancho--; $posy=0; $posx=floor($ancho/2); $cont=1; while ($cont<=$ancho**2){ if (empty($c[$posy][$posx])){ $c[$posy][$posx]=$cont++; $posx=($posx+1)%$ancho; $posy=($posy-1+$ancho)%$ancho; } else{ $posx=($posx-1+$ancho)%$ancho; $posy=($posy+2)%$ancho; } } return $c; } $c= cuadrado_magico(3); echo array_to_table($c); $c= cuadrado_magico(5); echo array_to_table($c);
Arrays multidimensionales en PHP
$b=array(array('A','b'),array('c','d','e','f'),array('g','h','i')); echo "<pre>"; print_r($b); echo "</pre>"; echo $b[1][2]; echo "<br/>"; for ($i=0;$i<count($b);$i++){ for($j=0;$j<count($b[$i]);$j++){ echo "($i,$j) ".$b[$i][$j]." | "; } echo "<br/>"; } foreach($b as $valor){ foreach($valor as $letra){ echo $letra."|"; } echo "<br/>"; } for ($i = 0; $i < 5; $i++) for ($j = 0; $j < 5; $j++) $c[$i][$j] = $j + $i * 5; echo array_to_table($c); function array_to_table($tabla) { $res="<table border=1>"; for ($i = 0; $i < count($tabla); $i++) { $res.="<tr>"; for ($j = 0; $j < count($tabla[$i]); $j++) { $res.="<td>" . $tabla[$i][$j] . "</td>"; } $res.="</tr>"; } $res.="</table>"; return $res; } //Mezcla sin sentido, a lo loco: $tutifruti=array('juan'=>array('a','b','c'),'ana'=>array('c'=>3,'d'=>6,'e'=>8),'rosa'=>array('j','k',array(1,2,3,4))); var_dump($tutifruti);
Arrays asociativos en PHP
$a=array('Juan'=>'Técnico','Ana'=>'Marketing','Rosa'=>'Administración'); $a['Jose']='Ventas'; echo $a['Juan']."<br/>"; foreach($a as $clave=>$valor){ echo $clave." - ".$valor."<br/>"; } echo "<pre>"; print_r($a); var_dump($a); echo "</pre>";
Funciones php
function ajedrez($i, $j) { if (($i + $j) % 2 == 0) { return 'class="par"'; } return ''; } function tablero($tam = 8) { ?> <table border="1"> <?php for ($j = 0; $j < $tam; $j++) { ?> <tr> <?php for ($i = 0; $i < $tam; $i++) { ?> <td <?= ajedrez($i, $j) ?> ></td> <?php } ?> </tr> <?php } ?> </table> <?php } function creaTD($num, $cont) { $res = ""; for ($i = 0; $i < $num; $i++) { $res.="<td>" . ($cont++) . "</td>"; } return $res; } function creaTR($num,$col,$cont){ $res = ""; for ($i = 0; $i < $num; $i++) { $res.="<tr>" . creaTD($col, $cont) . "</tr>"; $cont+=$col; } return $res; }
Funciones de números en PHP
Con is_numeric sabemos si una variable es numérica (aunque sea un string)
foreach ([5, '5', '05', 12.3, '16.7', 'cinco', 0xDECAFBAD, '10e200', '45r'] as $maybeNumber) { $isItNumeric = is_numeric($maybeNumber); $actualType = gettype($maybeNumber); print "Es el $actualType $maybeNumber numerico? "; if (is_numeric($maybeNumber)) { print "Sí"; } else { print "No"; } print " "; }
Redondeos:
$number = round(2.4); // Devuelve 2 $number1 = floor(2.1); // floor(2.1) is the float 2.0 $number2 = floor(2.9); // floor(2.9) is the float 2.0, also $number3 = floor(-2.1); // floor(-2.1) is the float -3.0 $number4 = floor(-2.9); // floor(-2.9) is the float 3.0, also $number1 = ceil(2.1); // ceil(2.1) is the float 3.0 $number2 = ceil(2.9); // ceil(2.9) is the float 3.0, also $number3 = ceil(-2.1); // ceil(-2.1) is the float -2.0 $number4 = ceil(-2.9); // ceil(-2.9) is the float 2.0, also
Siempre podemos poner un segundo parámetro que es la precisión (número de decimales)
Una función poco conocida, range, nos devuelve un rango de números:
print_r(range(1,10,2)); // Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 )
Para obtener números aleatorios tenemos las funciones rand y mt_rand (lo mismo pero mejorada)
int rand ( int $min , int $max ) int mt_rand ( int $min , int $max )
Para usar números grandes, se pueden usar las librerías BCMath o GMP:
$sum = bcadd('1234567812345678', '8765432187654321'); $sum = gmp_add('1234567812345678', '8765432187654321');
Soluciones ejercicios
$long = 6; $cadena = "*"; for ($i = 0; $i < $long; $i++) { echo $cadena . "<br/>"; $cadena.="*"; } echo "<pre>"; for ($i = 1; $i <= $long / 2; $i++) { echo str_repeat(" ", $long / 2 - $i) . str_repeat("*", $i * 2) . str_repeat(" ", $long / 2 - $i) . "<br/>"; } for ($i = $long / 2; $i >= 1; $i--) { echo str_repeat(" ", $long / 2 - $i) . str_repeat("*", $i * 2) . str_repeat(" ", $long / 2 - $i) . "<br/>"; } echo "</pre>"; echo "<pre>"; $i = 1; $inc = 1; while ($i > 0) { echo str_repeat(" ", $long / 2 - $i) . str_repeat("*", $i * 2) . str_repeat(" ", $long / 2 - $i) . "<br/>"; if ($i >= ($long-1) / 2) { $inc = -1; } $i+=$inc; } echo "</pre>"; $lado = 6; $cont=1; ?> <table border="1"> <?php for ($j = 0; $j < $lado; $j++) { ?> <tr> <?php for ($i = 0; $i < $lado; $i++) { ?> <td><?= $cont++ ?></td> <?php } ?> </tr> <?php } ?> </table> <table border="1"> <tr> <?php for ($i=1;$i<=$lado**2;$i++){ echo "<td>".($i)."</td>"; if ($i%$lado==0){ echo "</tr><tr>"; } } ?> </tr> </table>