Запутанная сортировка массивов в PHP - PullRequest
0 голосов
/ 07 июня 2011

Как лучше отсортировать этот массив по алфавиту, по String1?Нумерация клавиш всегда должна быть числовой.

До:

Key     | String1    Int1 String2 Int2
--------------------------------------
0       | Alligator  3    Cake    7
1       | Crocodile  17   foobar  9
2       | Bear       1    test    6
3       | Aardvark   2    lolwhat 3

После:

Key     | String1    Int1 String2 Int2
--------------------------------------
0       | Aardvark   2    lolwhat 3
1       | Alligator  3    Cake    7
2       | Bear       1    test    6
3       | Crocodile  17   foobar  9     

По сути, у меня есть массив, который содержит несколько массивов вэто, как я могу отсортировать эти массивы в первом массиве в алфавитном порядке, используя определенный элемент?

Ответы [ 3 ]

1 голос
/ 07 июня 2011

Вам понадобится функция сравнения, подобная следующей:

function compare($a, $b)
{
    if ($a['String1'] < $b['String1'])
        return -1;
    if ($a['String1'] > $b['String1'])
        return 1; 

    // At this point the strings are identical and you can go into 
    // a second value to compare something else if you wish 
    if ($a['String2'] < $b['String2'])
        return -1;
    if ($a['String2'] > $b['String2'])
        return 1;

    // as long as you cover the three situations you are fine. 
    return 0
}
1 голос
/ 07 июня 2011

Вы, вероятно, хотите usort, который позволяет вам определять функцию обратного вызова компаратора.

http://www.php.net/manual/en/function.usort.php

0 голосов
/ 07 июня 2011
function str1cmp($a, $b) {
    return strcmp($a['string1'], $b['string1']);
}

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