Сортировка массива

Статус
В этой теме нельзя размещать новые ответы.

yavasilek

Мой дом здесь!
Регистрация
5 Окт 2008
Сообщения
1.199
Реакции
454
Всем привет.
Есть массив $arr
Код:
echo "<pre>";
print_r($arr);
echo "</pre>";
Выводит
Код:
Array
(
    [0] => i_8656190918
    [1] => jpg
)
Array
(
    [0] => i_8656191010
    [1] => jpg
)
Array
(
    [0] => i_8653509911
    [1] => jpg
)
Array
(
    [0] => index
    [1] => php
)
Array
(
    [0] => i_8623698153
    [1] => jpg
)
Array
(
    [0] => i_8630235144
    [1] => jpg
)
Array
(
    [0] => i_8634942403
    [1] => jpg
)
Array
(
    [0] => i_8634942441
    [1] => jpg
)
Array
(
    [0] => i_8653509956
    [1] => jpg
)
Array
(
    [0] => i_8656190978
    [1] => jpg
)
Array
(
    [0] => i_8623698020
    [1] => jpg
)
Array
(
    [0] => i_8634942386
    [1] => jpg
)
Array
(
    [0] => info
    [1] => dat
)
Array
(
    [0] => i_8623698028
    [1] => jpg
)
Array
(
    [0] => i_8623698162
    [1] => jpg
)
Array
(
    [0] =>
    [1] =>
    [2] =>
)
Array
(
    [0] => i_8656190952
    [1] => jpg
)
Array
(
    [0] => i_8634942410
    [1] => jpg
)
Array
(
    [0] => i_8623698115
    [1] => jpg
)
Array
(
    [0] => i_8635726040
    [1] => jpg
)
Array
(
    [0] => i_8623698090
    [1] => jpg
)
Array
(
    [0] => i_8656191002
    [1] => jpg
)
Array
(
    [0] => i_8623698043
    [1] => jpg
)
Array
(
    [0] => i_8643914436
    [1] => jpg
)
Array
(
    [0] => namedb
    [1] => dat
)
Array
(
    [0] => i_8634942365
    [1] => jpg
)
Array
(
    [0] => i_8653509928
    [1] => jpg
)
Array
(
    [0] => i_8656191058
    [1] => jpg
)
Array
(
    [0] => i_8623698106
    [1] => jpg
)
Array
(
    [0] => i_8630235134
    [1] => jpg
)
Array
(
    [0] => i_8630235125
    [1] => jpg
)
Array
(
    [0] => i_8656190967
    [1] => jpg
)
Array
(
    [0] => i_8634942379
    [1] => jpg
)
Array
(
    [0] => i_8656191035
    [1] => jpg
)
Array
(
    [0] => i_8623698180
    [1] => jpg
)
Array
(
    [0] => i_8623698143
    [1] => jpg
)
Array
(
    [0] => thumb
)
Array
(
    [0] => i_8638024869
    [1] => jpg
)
Array
(
    [0] => i_8623698035
    [1] => jpg
)
Array
(
    [0] => i_8643914441
    [1] => jpg
)
Array
(
    [0] =>
    [1] =>
)
Array
(
    [0] => i_8656190989
    [1] => jpg
)
Array
(
    [0] => i_8634942428
    [1] => jpg
)
Array
(
    [0] => i_8623698098
    [1] => jpg
)
Array
(
    [0] => i_8630235116
    [1] => jpg
)
Array
(
    [0] => i_8634942434
    [1] => jpg
)
Как все это дело отсортировать по ключу [0] ?
 
PHP:
usort( $array, function( $a, $b ){

    if( $a[0] == $b[0] ) return 0;

    return ( $a[0] < $b[0] ) ? -1 : 1;
});
 
что-то не так делаете.. ниже код полностью (массив из вашего дампа).. рабочий, проверил..
PHP:
$arr = array(
    array
    (
        'i_8656190918',
        'jpg'
    ),
    array
    (
        'i_8656191010',
        'jpg'
    ),
    array
    (
        'i_8653509911',
        'jpg'
    ),
    array
    (
        'index',
        'php'
    ),
    array
    (
        'i_8623698153',
        'jpg'
    ),
    array
    (
        'i_8630235144',
        'jpg'
    ),
    array
    (
        'i_8634942403',
        'jpg'
    ),
    array
    (
        'i_8634942441',
        'jpg'
    ),
    array
    (
        'i_8653509956',
        'jpg'
    ),
    array
    (
        'i_8656190978',
        'jpg'
    ),
    array
    (
        'i_8623698020',
        'jpg'
    ),
    array
    (
        'i_8634942386',
        'jpg'
    ),
    array
    (
        'info',
        'dat'
    ),
    array
    (
        'i_8623698028',
        'jpg'
    ),
    array
    (
        'i_8623698162',
        'jpg'
    ),
    array
    (
        '',
        '',
        '',
    ),
    array
    (
        'i_8656190952',
        'jpg'
    ),
    array
    (
        'i_8634942410',
        'jpg'
    ),
    array
    (
        'i_8623698115',
        'jpg'
    ),
    array
    (
        'i_8635726040',
        'jpg'
    ),
    array
    (
        'i_8623698090',
        'jpg'
    ),
    array
    (
        'i_8656191002',
        'jpg'
    ),
    array
    (
        'i_8623698043',
        'jpg'
    ),
    array
    (
        'i_8643914436',
        'jpg'
    ),
    array
    (
        'namedb',
        'dat'
    ),
    array
    (
        'i_8634942365',
        'jpg'
    ),
    array
    (
        'i_8653509928',
        'jpg'
    ),
    array
    (
        'i_8656191058',
        'jpg'
    ),
    array
    (
        'i_8623698106',
        'jpg'
    ),
    array
    (
        'i_8630235134',
        'jpg'
    ),
    array
    (
        'i_8630235125',
        'jpg'
    ),
    array
    (
        'i_8656190967',
        'jpg'
    ),
    array
    (
        'i_8634942379',
        'jpg'
    ),
    array
    (
        'i_8656191035',
        'jpg'
    ),
    array
    (
        'i_8623698180',
        'jpg'
    ),
    array
    (
        'i_8623698143',
        'jpg'
    ),
    array
    (
        'thumb'
    ),
    array
    (
        'i_8638024869',
        'jpg'
    ),
    array
    (
        'i_8623698035',
        'jpg'
    ),
    array
    (
        'i_8643914441',
        'jpg'
    ),
    array
    (
        '',
        ''
    ),
    array
    (
        'i_8656190989',
        'jpg'
    ),
    array
    (
        'i_8634942428',
        'jpg'
    ),
    array
    (
        'i_8623698098',
        'jpg'
    ),
    array
    (
        'i_8630235116',
        'jpg'
    ),
    array
    (
        'i_8634942434',
        'jpg'
    ) );

usort( $arr, function ( $a, $b ){

    if( $a[ 0 ] == $b[ 0 ] ) return 0;

    return ( $a[ 0 ] < $b[ 0 ] ) ? -1 : 1;
} );

var_dump( $arr );
 
что-то не так делаете.. ниже код полностью (массив из вашего дампа).. рабочий, проверил..
PHP:
$arr = array(
    array
    (
        'i_8656190918',
        'jpg'
    ),
    array
    (
        'i_8656191010',
        'jpg'
    ),
    array
    (
        'i_8653509911',
        'jpg'
    ),
    array
    (
        'index',
        'php'
    ),
    array
    (
        'i_8623698153',
        'jpg'
    ),
    array
    (
        'i_8630235144',
        'jpg'
    ),
    array
    (
        'i_8634942403',
        'jpg'
    ),
    array
    (
        'i_8634942441',
        'jpg'
    ),
    array
    (
        'i_8653509956',
        'jpg'
    ),
    array
    (
        'i_8656190978',
        'jpg'
    ),
    array
    (
        'i_8623698020',
        'jpg'
    ),
    array
    (
        'i_8634942386',
        'jpg'
    ),
    array
    (
        'info',
        'dat'
    ),
    array
    (
        'i_8623698028',
        'jpg'
    ),
    array
    (
        'i_8623698162',
        'jpg'
    ),
    array
    (
        '',
        '',
        '',
    ),
    array
    (
        'i_8656190952',
        'jpg'
    ),
    array
    (
        'i_8634942410',
        'jpg'
    ),
    array
    (
        'i_8623698115',
        'jpg'
    ),
    array
    (
        'i_8635726040',
        'jpg'
    ),
    array
    (
        'i_8623698090',
        'jpg'
    ),
    array
    (
        'i_8656191002',
        'jpg'
    ),
    array
    (
        'i_8623698043',
        'jpg'
    ),
    array
    (
        'i_8643914436',
        'jpg'
    ),
    array
    (
        'namedb',
        'dat'
    ),
    array
    (
        'i_8634942365',
        'jpg'
    ),
    array
    (
        'i_8653509928',
        'jpg'
    ),
    array
    (
        'i_8656191058',
        'jpg'
    ),
    array
    (
        'i_8623698106',
        'jpg'
    ),
    array
    (
        'i_8630235134',
        'jpg'
    ),
    array
    (
        'i_8630235125',
        'jpg'
    ),
    array
    (
        'i_8656190967',
        'jpg'
    ),
    array
    (
        'i_8634942379',
        'jpg'
    ),
    array
    (
        'i_8656191035',
        'jpg'
    ),
    array
    (
        'i_8623698180',
        'jpg'
    ),
    array
    (
        'i_8623698143',
        'jpg'
    ),
    array
    (
        'thumb'
    ),
    array
    (
        'i_8638024869',
        'jpg'
    ),
    array
    (
        'i_8623698035',
        'jpg'
    ),
    array
    (
        'i_8643914441',
        'jpg'
    ),
    array
    (
        '',
        ''
    ),
    array
    (
        'i_8656190989',
        'jpg'
    ),
    array
    (
        'i_8634942428',
        'jpg'
    ),
    array
    (
        'i_8623698098',
        'jpg'
    ),
    array
    (
        'i_8630235116',
        'jpg'
    ),
    array
    (
        'i_8634942434',
        'jpg'
    ) );

usort( $arr, function ( $a, $b ){

    if( $a[ 0 ] == $b[ 0 ] ) return 0;

    return ( $a[ 0 ] < $b[ 0 ] ) ? -1 : 1;
} );

var_dump( $arr );
скопировал и вставил - ошибка сервера.
Может версия php виновата?
PHP Version 5.2.17-pl0-gentoo

скопировал и вставил - ошибка сервера.
Может версия php виновата?
PHP Version 5.2.17-pl0-gentoo
на другом сервере работает на ура, а на этом нет ((
 
Последнее редактирование модератором:
в версиях <5.3 нет анонимных функций (только лямбда).. для них так:
PHP:
function cmp( $a, $b ){ // лучше переименовать в соответствии с контекстом
    if( $a[ 0 ] == $b[ 0 ] ) return 0;

    return ( $a[ 0 ] < $b[ 0 ] ) ? -1 : 1;
}

usort( $arr, 'cmp' );
 
Последнее редактирование:
какая именно ошибка (дословно)? дампы массивов точно одинаковы?

зы.. дайте конкретики, после отпуска телепатические способности ослаблены..
создаю новый php файл и помещаю туда Ваш пример
На нужном мне сервере(виртуальный хостинг, PHP Version 5.2.17-pl0-gentoo) вылетает ошибка сервера Код ошибки: 500
На другом моем сервере все отлично отрабатывает.

методом проб выяснил, что usort не выдает ошибку, ошибка появляется когда добавляем function как параметр usort
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху