Jimmy Buriticá Londoño
EstudianteGuadalupe Monge Barale
EstudianteJhon Carlos Romo Ramirez
EstudianteWilmer Alexander Salazar Pabon
EstudianteAka SinssChoss
EstudianteBryan David Muñoz
EstudianteChristian Medel
EstudiantePablo Rodríguez Cruz
EstudiantePlatzi Team
EstudianteCarlos Armando Hernández Godoy
EstudianteFernando Luna
EstudianteMauricio Galvez
EstudianteJoel Dominguez Merino
EstudianteJimmy Buriticá Londoño
EstudianteMARLON CHUQUINO CAPA
EstudianteJhony Quintero Machado
EstudianteJefferson Lennart Campos Segovia
EstudianteLESTHER XITUMUL MANUEL
EstudianteJose Alejandro Pantoja Giraldo
EstudianteCristobal Nyram
EstudianteCarlos Rubén Díaz Gutiérrez
EstudianteOperador Nave Espacial <=>
También se puede implementar con string . Las primeras letras o todas mayúsculas o todas minúsculas para que ordene alfabéticamente.
$palabras = ["Hola", "Abecedario", "Perro", "Gato"]; usort($palabras, function($a, $b){ return $a <=> $b; }); foreach ($palabras as $clave => $valor) { echo "Clave[" . $clave . "] = " . $valor . "\n"; }
Claro, muy buen aporte!
Recorre todo el arreglo comparando los valores, verifica si un numero es mayor, igual o menor que el otro
Ordenamiento de arreglos mediante el método burbuja
// Ordenamiento burbuja $array = [12, 56, 32, 89, 2, 1]; for ($i=0; $i < count($array)-1 ; $i++) { for ($j=0; $j < count($array)-1 ; $j++) { if($array[$j] > $array[$j+1]){ $aux = $array[$j]; $array[$j] = $array[$j+1]; $array[$j+1] = $aux; } } }
//Imprimimos foreach($array as $i){ // 1 2 12 32 56 89 echo $i . " "; }
**Me hice una pregunta, ** ¿Puede usort ayudarme a oranizar un array de forma de mayor a menor?... la respuesta es tan simple que me estallo la cabeza... no se si la sintaxis este bn, pero con solo cambiar las $variables a evaluar en nave space, se solucionaba este problema.
**usort () de menor a mayor: **
<?php $array = [45, 4, 55, 67, 56, 7]; usort($array, function($a, $b){ return $a <=> $b; }); var_dump($array); echo "\n"; ?>
usort() de mayor a menor:
<?php $array = [45, 4, 55, 67, 56, 7]; usort($array, function($a, $b){ return $b <=> $a; }); var_dump($array); echo "\n"; ?>
supongo que tambien podria funcionar la negacion del mismo usort
Aquí os lo dejo con comentarios! :D
<?php $precios_de_cafes = [12, 56, 67, 88, 2, 1]; // usort ordena un arreglo utilizando una función de comparación personalizada usort($precios_de_cafes, function($a, $b){ // La función de comparación utiliza el operador spaceship (<=>) // que retorna -1 si $a es menor que $b, 0 si son iguales, y 1 si $a es mayor que $b return $a <=> $b; }); // var_dump imprime información detallada sobre una variable, en este caso, el arreglo ordenado var_dump($precios_de_cafes);
<?php $cafe_price = [12,34,1,13,23]; #Utilizamos una funcion anonima usort($cafe_price,function($a,$b){ /*El operador Spaceship "<=>" retorna valores entre -1 y 1 y esto es exactamente lo que utiliza usort() para ordenar. 1. usort() toma los dos primeros valores de arreglo 2. function los recibe y retorna: #$a<$b: echo $var_a <=> $var_d; #Out: 🙃 -1 #$a>$b: echo $var_d <=> $var_a; #Out: 🙃 1 ##$a==$b: echo $var_a <=> $var_b; #Out: 🙃 0 return $a <=> $b; 3. usort utiliza el valor retornado para ordenar el array. */ return $a<=>$b; }); var_dump($cafe_price); /*🙃Out: array(5) { [0]=> int(1) [1]=> int(12) [2]=> int(13) [3]=> int(23) [4]=> int(34) }*/
En programación, un "callback" es una función que se pasa como argumento a otra función y se invoca en un momento posterior o cuando se cumple una determinada condición. Esto permite que el código se ejecute de manera asíncrona y se controle la secuencia de eventos.
Imagina que tienes una función llamada doSomething que realiza una tarea específica. Esta función acepta otro parámetro llamado callback, que es una función que se debe ejecutar después de que doSomething haya terminado su tarea.
Aquí hay un ejemplo de cómo se podría utilizar un callback:
<code> function dosomething(callback) { // Realiza alguna operación aquí // Una vez que se completa la operación, se invoca al callback callback(); } function callbackFunction() { console.log("El callback se ha invocado"); } // Pasamos la función de callback como argumento a dosomething dosomething(callbackFunction);
En este ejemplo, doSomething es la función principal que realiza una tarea. Luego, después de que se completa la tarea, invoca al callback que se le pasa como argumento. En este caso, el callback es callbackFunction, que simplemente imprime un mensaje en la consola.
El uso de callbacks es común cuando se trabaja con operaciones asíncronas, como solicitudes a servidores, manejo de eventos o procesamiento de archivos. Al pasar una función de callback, podemos definir qué hacer después de que se complete una operación y asegurarnos de que el programa continúe ejecutándose sin bloquearse mientras se espera el resultado de esa operación.
se podra usar para hacer un arbol binario? 👀🧠
Guau sí. Sería un gran caso de uso.
Con esta clase entendí por que en Js usamos igual un callback en el método de ordenamiento donde internamente escribimos (a - b). Ahora entiendo que a partir del número que regresa esa resta es como considera si el primer número es menor, igual o mayor. Gracias Carlos! 🤩 Comparto mí apunte de esta clase donde empleamos el operador de nave espacial 🚀 para ordenar. .
Operador Nave Espacial
$precios = [15, 30, 12, 45, 1, 2, 56, 99]; usort($precios, function($a, $b) { return $a <=> $b; }); print_r($precios);
francamente en esta clase no entendi ni mela
Notas de la clase y repaso:
Tengo una lista de precios de cafés en un array que deseo ordenar.
$precios_de_cafes con varios números. Cada número representa el precio de un café diferente. $precios_de_cafes = [12, 56, 32, 89, 2, 1];
usort(), que es una función en PHP que nos ayuda a ordenar elementos en un array de acuerdo a una regla que yo defino.usort($precios_de_cafes, function($a, $b){
return $a <=> $b;
});
$a y $b, que son precios de la lista), y decide cuál debería ir antes y cuál después.<=> es conocido como el "operador de nave espacial". Compara los dos elementos ($a y $b):
$a es menor que $b, devuelve -1 (lo que significa que $a va antes que $b).$a es igual a $b, devuelve 0 (quedan en el mismo orden que estaban).$a es mayor que $b, devuelve 1 (lo que significa que $a va después de $b).var_dump() para mostrar cómo quedó ordenada la lista después de usar usort(). Ahora la lista $precios_de_cafes estará organizada de menor a mayor precio.var_dump($precios_de_cafes);
Interesante
En resumen, esta línea de código return $a <=> $b; hace lo mismo que todo esto:
if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1;
La verdad nunca me he topado con una necesidad asi, pero me gusto saber que existe.
¿Aparte del operador 'nave espacial' que otro operador existe?
Te dejo la documentación oficial de PHP, ahí están todos los operadores.