Image presentation

Ordenação de arrays com PHP


Aprenda a classificar uma lista diretamente no código

Olá, eu sou o Marco e hoje vou mostrar para vocês como fazer ordenação de arrays (listas) em PHP. Na verdade é tudo muito simples, confere só.

Na verdade o PHP tem muitas maneiras de fazer ordenação de arrays, você precisa definir o que se enquadra melhor para o que você está fazendo.

No exemplo abaixo eu estou tentando ordenar um array de publicações. Neste caso é interessante que as publicações sejam categorizadas da mais nova para a mais antiga, ou seja, as publicações mais novas devem aparecer primeiro na lista.

/**
 * This function make the order.
 *
 * Newest first!
 */
$cmpFunc = function($a, $b) {
  $a = $a['created'] ?? 0;
  $b = $b['created'] ?? 0;

  // Two equal dates
  if (strtotime($a) == strtotime($b)) {
    return 0;
  }
  return (strtotime($a) > strtotime($b)) ? -1 : 1;
};

// List to be ordered
$routes = $this->getRoutes();
usort($routes, $cmpFunc);

Note que o código acima está utilizando o PHP 7+. Como sabemos disso? A instrução $a['created'] ?? 0 não é permitida antes disso. Bom, só para deixar claro, nas versões anteriores do PHP isso deve ser substituído por isset($a['created']) ? $a['created'] : 0.

Nós escolhemos a função usort para fazer a ordenação de nosso array. Esta função só recebe parâmetros que são variáveis, por isso das atribuições.

A função $cmpFunc recebe automaticamente dois parâmetros $a e $b, esses são dois itens do array onde a função irá fazer a comparação. Como nosso array é associativo (ele contém sub-itens) nós temos que indicar quais são os itens de comparação, no nosso caso a data que deve estar em um formato possível de ser traduzido pela função strtotime, ou seja, Y-m-d (ano - mês - dia) que é o padrão mais aceito no mundo da programação.

Ao retornar 0 (zero) a função $cmpFunc está informando que os dois itens são iguais. Se retornar -1 (menos um) significa que o item $a é, em nosso caso, maior que $b. Se retornar 1 (um) significa que o item $a é, em nosso caso, menor que $b

Para conhecer outros métodos de ordenação do PHP acesse essa lista do manual. Manual este que inclusive é super completo.

Gostou? Deixa seu jóinha aí, curte, compartilha e deixe seu comentário.