No tienes acceso a esta clase

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

Operador de nave espacial

18/25
Recursos

Aportes 13

Preguntas 1

Ordenar por:

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

o inicia sesión.

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

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

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

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?