Как отсортировать массив с помощью 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
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