Как отсортировать массив с помощью php


Хорошо, у меня есть переменная $produtos, который получает следующий массив:

 array (size=6)
      0 => 
        array (size=4)
          'id' => string '107' (length=3)
          'nome' => string 'LAREIRA PEQ.' (length=12)
          'qtd' => float 43
          'total' => float 64500
      1 => 
        array (size=4)
          'id' => string '108' (length=3)
          'nome' => string 'CHORAQUERIA PEQ.' (length=16)
          'qtd' => float 60
          'total' => float 48000
      2 => 
        array (size=4)
          'id' => string '109' (length=3)
          'nome' => string 'JOGO DE FACAS' (length=13)
          'qtd' => float 90
          'total' => float 27000
      3 => 
        array (size=4)
          'id' => string '111' (length=3)
          'nome' => string 'PROVALEIRA' (length=10)
          'qtd' => float 100
          'total' => float 6000
      4 => 
        array (size=4)
          'id' => string '110' (length=3)
          'nome' => string 'COOLERS' (length=7)
          'qtd' => float 84
          'total' => float 21000
      5 => 
        array (size=4)
          'id' => string '112' (length=3)
          'nome' => string 'CHAMPANHEIRA' (length=12)
          'qtd' => float 28
          'total' => float 1962.64

Хорошо, как я могу сортировать это по полю кол-во, или в алфавитном порядке?

Я верхом массив так:

while ($resultado = mysqli_fetch_object($consulta)) {

    // Array com dados do produto
    $curva[] = array(
        "id" => $resultado->id,
        "nome" => $resultado->nome,
        "qtd" => $qtd,
        "total" => $total
    );
}

Точные поймать в массив и изменить порядок его. Имеет, как это сделать?

 1
php
Author: Hugo Borges, 2017-03-07

1 answers

Для сортировки вы можете использовать uasort для того чтобы с обратного просматривать содержимое каждого массива, первый параметр будет текущего элемента, а второй будет следующим, поэтому вы делаете то, сравнительный и возвращает true, false.

Сортировка A-Z (буквы) необходимо использовать strcmp

Сортировка по количеству:

<?php
$teste = array(
    array(
        'id' => '107',
        'nome' => 'LAREIRA PEQ.',
        'qtd' => 43,
        'total' => 64500
    ),
    array(
        'id' => '108',
        'nome' => 'CHORAQUERIA PEQ.',
        'qtd' => 60,
        'total' => 48000
    ),
    array(
        'id' => '109',
        'nome' => 'JOGO DE FACAS',
        'qtd' => 90,
        'total' => 27000
    ),
    array(
        'id' => '111',
        'nome' => 'PROVALEIRA',
        'qtd' => 100,
        'total' => 6000
    ),
    array(
        'id' => '110',
        'nome' => 'COOLERS',
        'qtd' => 84,
        'total' => 21000
    ),
    array(
        'id' => '112',
        'nome' => 'CHAMPANHEIRA',
        'qtd' => 28,
        'total' => 1962.64
    )
);

uasort($teste, function ($a, $b) {
    return $a['qtd'] < $b['qtd'];
    //Se quiser inverter a ordem basta trocar por return $a['qtd'] > $b['qtd'];
});

print_r($teste);

Сортировка по имени:

<?php
$teste = array(
    array(
        'id' => '107',
        'nome' => 'LAREIRA PEQ.',
        'qtd' => 43,
        'total' => 64500
    ),
    array(
        'id' => '108',
        'nome' => 'CHORAQUERIA PEQ.',
        'qtd' => 60,
        'total' => 48000
    ),
    array(
        'id' => '109',
        'nome' => 'JOGO DE FACAS',
        'qtd' => 90,
        'total' => 27000
    ),
    array(
        'id' => '111',
        'nome' => 'PROVALEIRA',
        'qtd' => 100,
        'total' => 6000
    ),
    array(
        'id' => '110',
        'nome' => 'COOLERS',
        'qtd' => 84,
        'total' => 21000
    ),
    array(
        'id' => '112',
        'nome' => 'CHAMPANHEIRA',
        'qtd' => 28,
        'total' => 1962.64
    )
);

uasort($teste, function ($a, $b) {
    return strcmp($a['nome'], $b['nome']);
    //Se quiser inverter a ordem basta trocar por return strcmp($b['nome'], $a['nome']);
});

print_r($teste);
 4
Author: Guilherme Nascimento, 2017-03-07 17:03:36