Algunos enlaces del 4YFN

Plataforma para profesores:

http://www.teacherspro.com

Herramientas educativas a la programación:

http://www.helloapps.com/

Examen de candidatos online:

https://devskiller.com/

Tinder de candidatos y trabajos:

https://www.tinkerlink.com/

Desarrollo de aplicaciones de una manera rápida:

https://kingofapp.com/es/

Vivero para startsups:

https://demiumstartups.com/

Kit de programación para drones:

http://codingbird.kr

Aceleradora de empresas:

https://rocasalvatella.com/

Ejemplos ordenar

https://www.toptal.com/developers/sorting-algorithms


$a=[3,1,8,5,2,6];
print_r($a);
sort($a);
print_r($a);
$b=["juan","ana","pepe","eva"];
sort($b);
print_r($b);
$c="en un lugar de la mancha De cuyo nombre no quiero acordarme";
$d= explode(" ", $c);
sort($d);
print_r($d);

$asoc=["aa"=>10,"bb"=>5,"cc"=>3,"dd"=>9];
asort($asoc);
print_r($asoc);
ksort($asoc);
print_r($asoc);
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");

asort($array1);
echo "Ordenación estándar\n";
print_r($array1);

natsort($array2);
echo "\nOrdenación de orden natural\n";
print_r($array2);

function comparacion($a,$b){
    if (strlen($a)==strlen($b)){
        return 0;
    }
    if (strlen($a)<strlen($b)){
        return -1;
    }
    if (strlen($a)>strlen($b)){
        return 1;
    }
}
echo comparacion("cacahuete","hola");
usort($d,"comparacion");
print_r($d);

Ordenar arrays

Nombre de la función Ordena por Mantiene asociación con las key Orden de la clasificación Funciones relacionadas
array_multisort() valor sí si es asociativa, no si es númerica primer array u opciones de clasificación array_walk()
asort() valor menor a mayor arsort()
arsort() valor mayor a menor asort()
krsort() key mayor a menor ksort()
ksort() key menor a mayor asort()
natcasesort() valores natural, insensible a mayúsculas y minúsculas natsort()
natsort() valor natural natcasesort()
rsort() valor no mayor a menor sort()
shuffle() valor no aleatorio array_rand()
sort() valor no menor a mayor rsort()
uasort() valor definido por el usuario uksort()
uksort() key definido por el usuario uasort()
usort() valor no definido por el usuario uasort()

Ejercicio empleados

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <form>
            Nombre: <input type="text" name="nombre">
            Sueldo: <input type="number" name="sueldo">
            <input type="submit">
        </form>
        <?php
        session_start();
        $nombre = filter_input(INPUT_GET, "nombre");
        $sueldo = filter_input(INPUT_GET, "sueldo", FILTER_VALIDATE_INT);
        $borrar = filter_input(INPUT_GET, "borrar");
        if (!empty($borrar)) {
            unset($_SESSION['empleados'][$borrar]);
        }
        if (!empty($nombre) && is_numeric($sueldo)) {
            //Si empleados está vacía añadimos directamente el valor
            if (empty($_SESSION['empleados'])) {
                $_SESSION['empleados'][$nombre] = $sueldo;
            } else {
                //Creamos un array para copiar empleados
                $auxiliar = [];
                foreach ($_SESSION['empleados'] as $c => $v) {
                    //Si el sueldo es menor lo metemos antes
                    if ($sueldo < $v) {
                        $auxiliar[$nombre] = $sueldo;
                    }
                    //Y siempre copiamos el elemento, lo que pasa es
                    //Que si el sueldo era menor lo hemos añadido en
                    //el if anterior
                    $auxiliar[$c] = $v;
                }
                //Si después de recorrer el array no lo hemos introducido
                //Es que debe ir al final
                if (!isset($auxiliar[$nombre])) {
                    $auxiliar[$nombre] = $sueldo;
                }
                //Sustituimos el array empleados por la copia
                $_SESSION['empleados'] = $auxiliar;
            }
       }
            if (!isset($_SESSION['empleados'])) :
                $_SESSION['empleados'] = [];
            endif;
            ?>
            <table>
                <tr><th>Empleado</th><th>Sueldo</th><th>Acciones</th></tr>
                <?php
                foreach ($_SESSION['empleados'] as $c => $v):
                    ?>
                    <tr><td><?= $c ?></td><td><?= $v ?></td>
                        <td><a href="?borrar=<?= $c ?>">Borrar</a></td></tr>
                    <?php
                endforeach;
                ?>
        </table>
    </body>
</html>

Ejercicio empleados

Vamos a realizar un ejercicio en el cual tendremos el mantenimiento de una lista de empleados. Tendremos una caja con el nombre y una con el sueldo. Cuando el usuario le de a enviar nos añadirá el empleado a la variable de sesión ‘Empleados’ con la clave el nombre del empleado y valor el sueldo.

Ej: Juan   3000

$_SESSION[’empleados’][‘Juan’]=>3000;

Hay que hacer las siguientes opciones:

1.- Poder dar de alta empleados

2.- Visualizarlos en una tabla

3.- Añadir la opción para borrarlos

4.- Poder cambiar el sueldo de un empleado

5.- (Complicada) Poner el empleado justo antes del primer empleado que tenga más sueldo que él.

Funciones Array (V)

Funciones de búsqueda en arrays:

in_array()

array_search()

array_key_exists()

Ejemplos:

 $tabla=range("a","j");
 
 if (in_array("b",$tabla)){
 echo "Está la b<br/>";
 }
 if (in_array("w",$tabla)){
 echo "Está la w<br/>";
 }
 
 $pos= array_search("b", $tabla);
 echo "|".$pos."|<br/>";
 $pos= array_search("w", $tabla);
 echo "|".$pos."|<br/>";
 
 $asociativa=array("a"=>1,"b"=>2,"c"=>3,"d"=>4,);
 $pos= array_search(3, $asociativa);
 echo "|".$pos."|<br/>";
 
 if (array_key_exists("d",$asociativa)){
 echo "Existe la clave d<br/>";
 }

Ejercicio añadir nombres a variable de sesión


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form method="get">
Nombre:
<input type="text" name="nombre">
<input type="submit">
<input type="submit" name="reset" value="reset">
</form>
<?php
session_start();
$nombre = filter_input(INPUT_GET, "nombre");
$reset = filter_input(INPUT_GET, "reset");
$borrar = filter_input(INPUT_GET, "borrar");
if (is_numeric($borrar)){
//unset($_SESSION['lista'][$borrar]);
array_splice($_SESSION['lista'],$borrar,1);

}
if (empty($reset)) {
if (!empty($nombre)) {
$_SESSION['lista'][] = $nombre;
}
foreach ($_SESSION['lista'] as $c=>$elemento) {
echo $elemento." |<small><a href='?borrar=$c'>Borrar</a></small> |<br>";
}
} else {
$_SESSION['lista'] = [];
}
?>
</body>
</html>

Lo mismo con form

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <form method="get">
            Nombre:
            <input type="text" name="nombre">
            <input type="submit">
            <input type="submit" name="reset" value="reset">
        </form>
        <?php
        session_start();
        $nombre = filter_input(INPUT_GET, "nombre");
        $reset = filter_input(INPUT_GET, "reset");
        $borrar = filter_input(INPUT_POST, "borrar");
        if (is_numeric($borrar)) {
            //unset($_SESSION['lista'][$borrar]);
            array_splice($_SESSION['lista'], $borrar, 1);
        }
        if (empty($reset)) {
            if (!empty($nombre)) {
                $_SESSION['lista'][] = $nombre;
            }
            foreach ($_SESSION['lista'] as $c => $elemento) {
                ?>
                <form method="post" action="<?=$_SERVER['PHP_SELF']?>"><?= $elemento ?>
                    <input type="hidden" name="borrar" value="<?= $c ?>">
                    <input type="submit" name="reset" value="Borrar">
                </form>
                <?php
            }
        } else {
            $_SESSION['lista'] = [];
        }
        ?>
    </body>
</html>

Funciones Array (IV)

Obtener partes de un array y modificarlo:

array_slice()

array_splice()

Ejemplos:

 function muestraTabla($tabla) {
 echo "<pre>";
 print_r($tabla);
 echo "</pre>";
 }

 $entrada = array("rojo", "verde", "azul", "amarillo");
 array_splice($entrada, 2);
 // $entrada ahora es array("rojo", "verde")
 muestraTabla($entrada);
 $entrada = array("rojo", "verde", "azul", "amarillo");
 array_splice($entrada, 2,1);
 // $entrada ahora es array("rojo", "verde","amarillo")
 muestraTabla($entrada);
 $entrada = array("rojo", "verde", "azul", "amarillo");
 array_splice($entrada, 1, -1);
 // $entrada ahora es array("rojo", "amarillo")
 muestraTabla($entrada);

 $entrada = array("rojo", "verde", "azul", "amarillo");
 $foo=array_splice($entrada, 1, count($entrada), "naranja");
 // $entrada ahora es array("rojo", "naranja")
 //$foo es array("verde","azul","amarillo")
 muestraTabla($entrada);
 muestraTabla($foo);

 $entrada = array("rojo", "verde", "azul", "amarillo");
 array_splice($entrada, -1, 1, array("negro", "granate"));
 // $entrada ahora es array("rojo", "verde",
 // "azul", "negro", "granate")
 muestraTabla($entrada);

 $entrada = array("rojo", "verde", "azul", "amarillo");
 array_splice($entrada, 3, 0, "púrpura");
 // $entrada ahora es array("rojo", "verde",
 // "azul", "púrpura", "amarillo");
 muestraTabla($entrada);
 
 $tabla=range("a","j");
 $a=array_slice($tabla,3);
 muestraTabla($a);
 $a=array_slice($tabla,3,2);
 muestraTabla($a);
 $a=array_slice($tabla,-3);
 muestraTabla($a);
 $a=array_slice($tabla,-3,1);
 muestraTabla($a);
 $a=array_slice($tabla,-4,-2);
 muestraTabla($a);

Funciones Array (III)

Funciones para crear arrays con rangos o valores:

range()

array_fill()

array_pad()

Ejemplos:

 function muestraTabla($tabla) {
 echo "<pre>";
 print_r($tabla);
 echo "</pre>";
 }

 $a = range(1, 5);
 muestraTabla($a);
 $b = range(1, 100, 10);
 muestraTabla($b);
 $c = range('a', 'e');
 muestraTabla($c);

 $d = array_fill(2, 10, "pepe");
 muestraTabla($d);


 $input = array(12, 10, 9);

 $result = array_pad($input, 5, 0);
 // el resultado es array(12, 10, 9, 0, 0)
 muestraTabla($result);
 $result = array_pad($input, -7, 4);
 // el resultado es array(4, 4, 4, 4, 12, 10, 9)
 muestraTabla($result);

 $result = array_pad($input, 2, "noop");
 // sin relleno
 muestraTabla($result);