#php #sorting
#php #сортировка
Вопрос:
У меня есть журнал покупок в моем администраторе интернет-магазина, один клиент купил много товаров, все товары отмечены артикулом, и я хочу отсортировать и сгруппировать свой журнал покупок по артикулу.
Есть ли какой-либо способ отсортировать это и сгруппировать их?
Артикул журнала покупок может выглядеть следующим образом:
27318
15277
14065
6236
vild-100
N/A
blomsterkasser-40g
16694
7147
24608
и отсортированная версия, которую я ищу:
6236
7147
14065
15277
16694
24608
27318
blomsterkasser-40g
vild-100
N/A
Вот код:
private function purchase_log_cart_items() {
while( wpsc_have_purchaselog_details() ) :
wpsc_the_purchaselog_item(); ?>
<tr>
<td><?php echo wpsc_purchaselog_details_quantity(); ?> x </td> <!-- QUANTITY! -->
<td><?php echo wpsc_purchaselog_details_name(); ?></td> <!-- NAME! -->
<td><?php echo wpsc_purchaselog_details_SKU(); ?></td> <!-- SKU! -->
<td>
<?php
echo wp.....
Комментарии:
1. вы пробовали
sort
?2. @kuh-chan Это, вероятно, не сработает, поскольку ‘N / A’ является последней записью в списке.
Ответ №1:
Вы можете сделать это с помощью usort
и пользовательской функции сортировки:
$array = [
27318,
15277,
14065,
6236,
'vild-100',
'N/A',
'blomsterkasser-40g',
16694,
7147,
24608
];
usort($array, function($left, $right) {
// else 'blomsterkasser-40g' would be the first entry
$left = (string) $left;
$right = (string) $right;
// always put 'N/A' on the last position
if($left == 'N/A' amp;amp; $right == 'N/A') {
return 0;
}else if($left == 'N/A') {
return 1;
} else if($right == 'N/A') {
return -1;
}
return $left <=> $right;
});
var_dump($array);
Рабочий код:https://3v4l.org/2K5sO