Сортировать этот массив на основе пользовательских критериев - PullRequest
0 голосов
/ 14 марта 2012
array("name" => "",
      "uid" => "",
      "nid" => "",
      "vid" => "");

И мне нужно, чтобы это было отсортировано так:

array("nid" => "",
      "uid" => "",
      "vid" => "",
      "name" => "");

Но я не могу понять, array_map, uksort () ... или любые другие. БЛАГОДАРЯ

Ответы [ 3 ]

2 голосов
/ 14 марта 2012

Не сортировка как таковая, но если вы смотрите только на 4 клавиши, то почему бы и нет:

$newArray = array("nid" => $array["nid"], "uid" => $array["uid"], "vid" => $array["vid"], "name" => $array["name"]);
1 голос
/ 14 марта 2012

Вы проверяли ссылку на функцию для uksort?

Учитывая, что вы хотите отсортировать массив по алфавиту в порядке возрастания по его ключам, но ключ 'name' должен быть последним, это должноработать, даже если вы добавите дополнительные ключи позже:

<?php

class MySortHelper
{
    function sort_my_array($a, $b)
    {
        if ( $a == $b ) return 0;

        if ( $a == 'name' ) return 1;
        if ( $b == 'name' ) return -1;

        return ($a > $b) ? 1 : -1;
    }
}

// ...

$my_sort_helper = new MySortHelper();
uksort($my_array, array($my_sort_helper, 'sort_my_array'));
0 голосов
/ 14 марта 2012

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

function myksort($a, $b) {
    $korder = array('nid', 'uid', 'vid', 'name');
     return (array_search($a, $korder) < array_search($b, $korder)) : -1 ? 1;
}

uksort($array, 'myksort');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...