No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Operador de nave espacial

18/25
Recursos

Aportes 17

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Funciones para ordenar un arreglo en PHP:

sort() : ordena un arreglo de menor a mayor.

usort() : arregla un arreglo, pero necesita tambi茅n como par谩metro una funci贸n, as铆 podemos ordenar un arreglo seg煤n nuestra necesidad.

existen mas, las puedes buscar en : https://www.php.net/manual/es/array.sorting.php

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

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

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);

**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";
?>
  • 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 鈥渃allback鈥 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 鈥榥ave espacial鈥 que otro operador existe?