function calcetin($tabla) {
$res = [];
foreach ($tabla as $clave => $valor) {
$res[$valor] = $clave;
}
return $res;
}
$t = ["a" => 1, "b" => 3, "c" => 1];
muestraTabla($t);
$c = calcetin($t);
muestraTabla($c);
function contar($tabla, $valor) {
$cont = 0;
foreach ($tabla as $v) {
if ($valor == $v) {
$cont++;
}
}
return $cont;
}
echo esUnico1($t);
function esUnico1($tabla) {
foreach ($tabla as $valor) {
if (contar($tabla, $valor) > 1) {
return false;
}
}
return true;
}
function esUnico2($tabla) {
$t = array_count_values($tabla);
foreach ($t as $valor) {
if ($valor > 1) {
return false;
}
}
return true;
}
function esUnico3($tabla){
sort($tabla);
for($i=1;$i<count($tabla);$i++){
if ($tabla[$i]==$tabla[$i-1]){
return false;
}
}
return true;
}
function esUnico4($tabla){
return count($tabla)==count(array_unique($tabla));
}
Mes: julio 2018
Ejemplo de función levenheist
echo masParecida("tomato", ["naranja","tomate","platano","morcilla"]);
echo masParecida("marnaja", ["naranja","tomate","platano","morcilla"]);
function masParecida($entrada, $palabras) {
// no se ha encontrado la distancia más corta, aun
$distancia = -1;
$cercana = "";
// bucle a través de las palabras para encontrar la más cercana
foreach ($palabras as $palabra) {
// calcula la distancia entre la palabra de entrada y la palabra actual
$lev = levenshtein($entrada, $palabra);
// verifica por una coincidencia exacta
if ($lev == 0) {
// la palabra más cercana es esta (coincidencia exacta)
return $palabra;
}
// si esta distancia es menor que la siguiente distancia
// más corta o si una siguiente palabra más corta aun no se ha encontrado
if ($lev <= $distancia || $distancia < 0) {
$cercana = $palabra;
$distancia = $lev;
}
}
return $cercana;
}
Funciones de cadena en PHP
Buscar una subcadena dentro de otra. Ejemplo ‘¿Tiene una cadena la @?’:
if (strpos($_POST['email'], '@') === false) {
print 'No hay arroba (@)';
}
Ponemos ‘===’ porque si la arroba está en la posición 0 se entiende como false.
El siguiente código nos devuelve el número de apariciones de una cadena en otra:
function contarCadena($pajar, $aguja) {
$pos = strpos($pajar, $aguja);
$cont = 0;
while ($pos !== false) {
$cont++;
$pos = strpos($pajar, $aguja, $pos + 1);
}
return $cont;
}
Obtener subcadenas de una cadena. Ejemplo: ‘Obtener los cuatro primeros caracteres del código’.
$substring = substr($string,$start,$length); $codigo='ABCD123456'; $parte=substr($codigo,0,4); //$parte='ABCD' $parte=substr($codigo,4,4); //$parte='1234' $parte=substr($codigo,4); //$parte='123456' $parte=substr($codigo,-4); //$parte='3456'
Ejercicio: dada una cadena obtener otra con los dos primeros caracteres y los dos últimos.
Mayúsculas y minúsculas:
print ucfirst("how do you do today?"); //Primera letra
print ucwords("the prince of wales"); //primera letra de cada palabra
print strtoupper("i'm not yelling!"); //mayúsculas
print strtolower('<a href="one.php">one</a>'); // minúsculas
Partir cadenas con explode (por separador):
$cadena="hola que tal";
$palabras=explode($cadena); //Array ( [0] => hola [1] => que [2] => tal )
echo implode("-",$palabras);//hola-que-tal
Reemplazar una cadena por otra:
echo str_replace("a", "#", "hola que tal"); //hol# que t#l
Repetir una cadena:
echo str_repeat("|-|",6); //|-||-||-||-||-||-|
Funciones ajedrez y tabla
function ajedrez($tam) {
?>
<table >
<?php
for ($i = 0; $i < $tam; $i++) {
?><tr><?php
for ($j = 0; $j < $tam; $j++) {
?><td class="<?= ($i + $j) % 2 == 0 ? "" : "dark" ?>"></td><?php }
?></tr><?php
}
?>
</table><?php
}
function tabla($tabla) {
?><table>
<?php
for ($i = 1; $i <= 10; $i++) {
?>
<tr><td><?= $i ?></td><td>x</td><td><?= $tabla ?></td>
<td>=</td><td><?= ($i * $tabla) ?></td></tr>
<?php
}
?>
</table><?php
}
Ejemplos PHP
Árbol de un lado:
$cadena = "*";
for ($i = 1; $i < 10; $i++) {
echo $cadena . "<br/>";
$cadena = $cadena . "*";
}
Árbol de los dos lados:
$tam=8;
$cadena = "";
echo "<pre>";
for ($i = 0; $i < $tam; $i++) {
for ($j = 0; $j < $tam - $i; $j++) {
echo " ";
}
echo $cadena . "*" . $cadena . "<br/>";
$cadena .= "*";
}
echo "</pre>";
Árbol con bolas de navidad:
$tam=8;
$cadena = "";
echo "<pre>";
for ($i = 0; $i < $tam; $i++) {
for ($j = 0; $j < $tam - $i; $j++) {
echo " ";
}
for ($j = 0; $j < $i * 2 + 1; $j++) {
if (rand(1, 10) == 7) {
echo "@";
} else {
echo "*";
}
}
echo "<br/>";
}
echo "</pre>";
Tablero de ajedrez, css:
td{
width:50px;
height:50px;
background-color: linen;
border: 1px solid #BBBBBB;
}
.dark{
background-color: black;
}
php:
<h1>Tablero de ajedrez</h1>
<?php
$tam = 8;
?>
<table >
<?php
for ($i = 0; $i < $tam; $i++) {
?><tr><?php
for ($j = 0; $j < $tam; $j++) {
?><td class="<?=($i+$j)%2==0?"":"dark"?>"></td><?php }
?></tr><?php
}
?>
</table>