Сортировка массива по значениям в PHP - PullRequest
2 голосов
/ 19 января 2010

У меня есть следующий массив

[0] => Array
    (
        [id] => 229
        [val] => 2
    )

[3] => Array
    (
        [id] => 237
        [val] => 1
    )

[4] => Array
    (
        [id] => 238
        [val] => 6
    )

Мне нужно отсортировать этот массив в соответствии со значениями val в массиве, и не знаете, как этого добиться?

Ответы [ 5 ]

8 голосов
/ 19 января 2010
function cmp($a, $b)
{
    if ($a["val"] == $b["val"]) {
        return 0;
    }
    return ($a["val"] < $b["val"]) ? -1 : 1;
}

usort($yourarray, "cmp");

Прочитайте это для получения дополнительной информации.

2 голосов
/ 19 января 2010

array_multisort может помочь с этим, пример 3 представляет аналогичную проблему и решение.

0 голосов
/ 19 января 2010

используйте эту функцию для сортировки массива в соответствии с вашими потребностями

function sksort(&$array, $subkey="id",$sort_ascending=false)
{
    if (count($array))
        $temp_array[key($array)] = array_shift($array);

    foreach($array as $key => $val){
        $offset = 0;
        $found = false;
        foreach($temp_array as $tmp_key => $tmp_val)
        {
            if(!$found and strtolower($val[$subkey]) > strtolower($tmp_val[$subkey]))
            {
                $temp_array = array_merge(
                    (array)array_slice($temp_array,0,$offset),
                    array($key => $val),
                    array_slice($temp_array,$offset)
                );
                $found = true;
            }
            $offset++;
        }
        if(!$found) $temp_array = array_merge($temp_array, array($key => $val));
    }

    if ($sort_ascending) $array = array_reverse($temp_array);

    else $array = $temp_array;
}

=============================================== =========================== теперь используйте эту функцию в массиве ur

sksort($arrayname, "val"); /* for ascending */

sksort($arrayname, "val", true); /* for descending */
0 голосов
/ 19 января 2010

Вы можете использовать array_multisort()

Примеры здесь: http://www.php.net/manual/en/function.array-multisort.php

Пример # 3 Сортировка результатов базы данных - это то, что вам нужно. Может быть проще, если вы не знакомы с функциями обратного вызова и usort().

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