Intereting Posts
Автоматически импортировать изображение в форму из URL-адресов изображений в Интернете? Как зашифровать с помощью MCRYPT_ARCFOUR в WAMP? AngularJS потоковое аудио с сервера PHP 2 Маршруты Laravel-4 с параметрами вызываются дважды MVC – проверка правильности ввода: контроллер, модель или оба Подтверждение того, что статические переменные PHP не сохраняются в запросах Изменение языка для даты в php Конвертация валюты для сайта электронной коммерции – Предотвращение неправильной полной корзины из-за округления включить внешние php-файлы PHP – htaccess – output_buffering Являются ли названные объекты в HTML все еще необходимыми в эпоху браузеров, поддерживающих Unicode? Почему эти Heredoc и Nowdoc вызывают ошибки? создать папку и подпапку в этой папке Программно определяя URL-адрес изображения MediaWiki Ошибка анализа: синтаксическая ошибка, неожиданный «endif» (T_ENDIF) в теме WordPress

Вывод массива PHP в порядке desc

мой код здесь: я пытаюсь использовать функцию сортировки, но не успех. это мой рабочий массив:

Выходной код MY code desplay не отсортирован:

<?php foreach($aCities as $key=>$val) { foreach($diskspace[$val] as $key=>$val2) { if(isset($val2['data'])) { //'MBytes %.f'=155.000000%; preg_match("/'(.*?)ytes \%.f'=(.*?)\%;/",$val2['data'],$aVal); echo($val.' '.ceil($aVal[2]).' '.$aVal[1].'<br />'); } } } ?> 

Код ВЫХОД:

 S 3 MB T 6 MB I 10 MB 

Мне нужен вывод в DESC (MemorySize), например:

 I 10 MB T 6 MB S 3 MB 

  $out = array(); foreach($diskspace as $key => $value) // parse original array { $row = array_values($value); $row = $row[0]; preg_match('/=(\d+)\./', $row['data'], $match); // get numerical value // MB as you did not show what else can be $out[] = array($key, $match[1] + 0, 'MB'); // convert $match[1] to integer } uasort($out, function ($a, $b) { // sort by the second column return $a[1] < $b[1] ? 1 : -1; }); foreach($out as $row) // output sorted data echo join(' ', $row) . "\n"; 
 usort($diskspace, function($a, $b) { $a = reset($a); $b = reset($b); $aVal = filter_var($a['data'], FILTER_SANITIZE_NUMBER_INT); $bVal = filter_var($b['data'], FILTER_SANITIZE_NUMBER_INT); if ($aVal == $bVal) { return 0; } else if ($aVal > $bVal) { return -1; } else { return 1; } }); var_dump($diskspace); 

Возможно, вы можете попробовать использовать rsort () ?

РЕДАКТИРОВАТЬ

Например, если у вас есть массив чисел $number_array = [1, 2, 3, 4] и вы используете функцию rsort (): rsort($number_array) результирующий массив будет иметь значения [5, 4, 3, 2, 1] в этом порядке.

Однако для вашего примера, судя по вашему коду, похоже, что вам лучше использовать usort ()

Вы можете использовать его как закрытие.

usort($diskspace, function($a, $b) { return $b[0]['data'] - $a[0]['data']; }

Я бы попытался сделать что-то подобное выше. Не тестируя его самостоятельно, он должен возвращать массив массивов, как вы заказывали по вашим данным, самым высоким до самого низкого. [0] будет эффективно сравнивать свойство данных первого элемента каждого из массивов, которое не должно быть проблемой, поскольку каждый из ваших массивов, составляющих $aCities имеет только один элемент.