
Lista de produtos vinda do banco, cada item um array associativo com nome e preco, e você precisa mostrar do mais barato pro mais caro. Dá pra fazer com array_multisort, só que aí você é obrigado a extrair uma coluna de preços antes, só pra servir de guia. Com usort é uma linha.
$itens = [
['nome' => 'Camiseta', 'preco' => 79.90, 'destaque' => 0],
['nome' => 'Boné', 'preco' => 39.90, 'destaque' => 1],
['nome' => 'Tênis', 'preco' => 259.00, 'destaque' => 0],
];
usort($itens, fn(array $a, array $b) => $a['preco'] <=> $b['preco']); O operador spaceship devolve -1, 0 ou 1 comparando os dois valores, que é exatamente o contrato que o usort espera da função de comparação. E desde o PHP 8.0 a ordenação é estável: itens com o mesmo preço mantêm a ordem em que apareceram no array. Antes disso a ordem deles variava entre versões.
Para colocar os destaques na frente e, dentro de cada grupo, ordenar por preço crescente, compare arrays. O PHP compara elemento por elemento, da esquerda pra direita, e só passa pro próximo em caso de empate.
usort($itens, function (array $a, array $b) {
return [$b['destaque'], $a['preco']] <=> [$a['destaque'], $b['preco']];
}); Escrever return $a['preco'] > $b['preco']; parece funcionar, mas o PHP 8 solta Deprecated: usort(): Returning bool from comparison function is deprecated. O motivo é que false serve tanto pra “menor” quanto pra “igual” e o motor não consegue separar os dois casos. O outro erro clássico é subtrair preços com casas decimais: o retorno vira int, 79.90 menos 79.50 dá 0 e os dois passam por empate. Use o spaceship.
Última coisa: usort reindexa as chaves de 0 em diante. Se as chaves do array significam alguma coisa, troque por uasort, que ordena preservando a associação entre chave e valor.
Tela branca ou fatal error no site e o visitante não pode ver a mensagem. Grave os erros do WordPress…
Módulo gratuito Roger_CnpjAlfanumerico que aplica máscara e validação do novo CNPJ alfanumérico no checkout e formulários do Magento 2 e…
A partir de 06/07/2026 a Receita passa a emitir CNPJ alfanumérico. Conheça o plugin grátis que aplica máscara e validação…
Para remover um módulo do Magento 2, siga os passos abaixo: 1. Desabilitar o módulo Primeiro, desabilite o módulo usando…
Para cancelar 100% do pedido e criar um crédito para todos os itens através da API REST do Magento 2,…
No Magento 2, a quantidade "reservada" na "Salable Quantity" é gerenciada principalmente pelos módulos MSI (Multi-Source Inventory). A "Salable Quantity"…