No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
21 Hrs
20 Min
33 Seg

Operador de nave espacial

18/25
Recursos

Aportes 16

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Operador 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";
}

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 . " "; 
}

Recorre todo el arreglo comparando los valores, verifica si un numero es mayor, igual o menor que el otro

**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";
?>

Aquí os lo dejo con comentarios! 😄

<?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);
  • usort es una funcion de Orden superior puesto que dentro de si misma lleva como argumento otra funcion.
<?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) 
}*/	

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);
**Notas de la clase y repaso:** Tengo una lista de precios de cafés en un array que deseo ordenar. 1. **Lista de Precios**: Primero tenemos una lista llamada `$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];` 1. **Ordenar la Lista:** Para ordenar esta lista, utilizamos una herramienta llamada `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;` `});` * **Función Anónima**: Aquí debemos crear una *"función anónima"*, es decir, una función sin nombre que sólo se usa aquí y que se invoca así misma. Esta función toma dos elementos a la vez *(por ejemplo,* `$a` *y* `$b`*, que son precios de la lista)*, y decide cuál debería ir antes y cuál después. * **Operador de Nave Espacial**: El `<=>` es conocido como el *"operador de nave espacial"*. Compara los dos elementos ($a y $b): * Si `$a` es menor que `$b`, devuelve -1 *(lo que significa que $a va antes que $b)*. * Si `$a` es igual a `$b`, devuelve 0 *(quedan en el mismo orden que estaban)*. * Si `$a` es mayor que `$b`, devuelve 1 *(lo que significa que $a va después de $b)*. 1. **Mostrar el Resultado**: Al final, utilizamos `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;

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.

La verdad nunca me he topado con una necesidad asi, pero me gusto saber que existe.

<?php

$preciosDeCafes = [12,56,32,48,19,36];

usort($preciosDeCafes,function ($a,$b)
{

  //<=>: Operador de nave espacial

  //Ordenar de mayor a menor
//  $nave = $b <=> $a;

//ordenar de menor a mayor
$nave = $a <=> $b;

  return $nave;
});


var_dump($preciosDeCafes);

echo "<br>";


 ?>

¿Aparte del operador ‘nave espacial’ que otro operador existe?