Multi Array Sort PHP - PullRequest
       1

Multi Array Sort PHP

1 голос
/ 15 сентября 2010

У меня возникли некоторые проблемы, когда я обдумываю, как это сделать. У меня есть массив в PHP

    array(131) {
     ["BLANF     "]=>
      array(3) {
        ["line_3"]=>
        string(4) "3.92"
        ["line_1"]=>
        string(1) "6"
        ["line_2"]=>
        string(2) "14"
      }
      ["BLOOH     "]=>
      array(3) {
        ["line_3"]=>
        string(4) "2.00"
        ["line_1"]=>
        string(1) "20"
        ["line_2"]=>
        string(1) "6"
      }

}

Это мне нужно отсортировать на основе значения line_1. В PHP Спасибо Zachary

Ответы [ 2 ]

3 голосов
/ 15 сентября 2010

Вы должны создать пользовательскую функцию сравнения для вашего массива и использовать ее с uasort() для поддержки индексов массива.

Вот как вы можете использовать uasort() для сортировки по line_1 ... Изменить сортировку по любому другому ключу во вложенном массиве просто.

<?php

  // The custom comparison function
function cmp($a, $b)            
{
    if ($a["line_1"] == $b["line_1"]) {
        return 0;
    }
    return ($a["line_1"] < $b["line_1"]) ? -1 : 1;
}

  // Sort the array using your custom comparison
uasort($array, 'cmp');

  // Make sure we got the right result
print_r($array);
?>

Живой пример

(я изменил line_1 числа, чтобы сортировка действительно что-то делала)

В этом случае PHP будет манипулировать типами для вас, но вы должны следить за тем, что у вас есть строки и конвертировать их в числа. Если вы не уверены, что произойдет, приведите строки к плавающим или целым числам. Это важно, поскольку PHP может сравнивать строки в алфавитном порядке с операторами сравнения .... поэтому, если есть вероятность, что буква или запятая или что-то может проникнуть в значение массива, вы можете набрать тип в int ((int) $a["line_1"]) или в число с плавающей точкой ((float) $a["line_1"]).

3 голосов
/ 15 сентября 2010

Используйте uasort, предоставляя функцию обратного вызова сравнения, которая сравнивает значения соответствующих строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...