2013-10-11 5 views
-1

У меня есть массив из 60 элементов в нем, которые нужно сортировать (от низкого до высокого) и должны получить первые 10 элементы этого отсортированного массива в качестве другого массива. Я застрял . любая помощь была бы замечательной!Сортировка массива на основе значения и получение первых n элементов в качестве другого массива отсортированного массива

До сих пор у меня есть -

$lists_store = get_stores($user_location); 
    asort($lists_store); // this give me sorted array as expected 

echo "<pre>"; 
print_r($lists_store); 
exit; 

Выведет ..

Array 
(
    [39] => 6291 
    [52] => 6293 
    [63] => 6322 
    [64] => 6323 
    [46] => 6327 
    [37] => 6338 
    [26] => 6341 
    [44] => 6346 
    [20] => 6346 
    [17] => 6346 
    [11] => 6349 
    [43] => 6349 
    [24] => 6350 
    [21] => 6351 
    [12] => 6351 
    [10] => 6352 
    [27] => 6354 
    [22] => 6354 
    [19] => 6355 ..... 

Теперь проблема возникает здесь ..

$lists_store = array_slice($lists_store, 0, 10); // gives me first 10 elements of array but on the key basis 

echo "<pre>"; 
print_r($lists_store); 
exit; 

выход будет ..

Array 
(
    [0] => 6291 
    [1] => 6293 
    [2] => 6322 
    [3] => 6323 
    [4] => 6327 
    [5] => 6338 
    [6] => 6341 
    [7] => 6346 
    [8] => 6346 
    [9] => 6346 
) 

Желаемая выход -

Array 
(
    [39] => 6291 
    [52] => 6293 
    [63] => 6322 
    [64] => 6323 
    [46] => 6327 
    [37] => 6338 
    [26] => 6341 
    [44] => 6346 
    [20] => 6346 
    [17] => 6346 
) 
+0

'lists_store = array_chunk ($ lists_store, 10, true);' – bansi

+0

Вы читали * документацию * для ['array_chunk'] (http://php.net/array_chunk) ?! – deceze

+0

Я обновил свой вопрос, я использую array_slice, и результат, о котором я упоминал здесь, также относится к array_slice – codepixlabs

ответ

2

, если вы хотите, чтобы получить часть массива, я думаю, вы должны использовать array_slice.

Обратите внимание, что array_slice() будет изменять порядок и сбросить индекс числового массива по умолчанию. Вы можете изменить это поведение, установив preserve_keys в TRUE.

попробуйте использовать

$lists_store = array_slice($lists_store, 0, 10, true); 

Код: http://www.php.net/manual/en/function.array-slice.php

+0

Извините, что я обновил свой вопрос, я использую только массив array_slice, который сбрасывает ключи – codepixlabs

+0

, вы должны установить четвертый параметр в значение true, чтобы сохранить ключи. – bansi

+0

Thankyou .. Для справки – codepixlabs

2

документация на array_chunk() указывает, что существует третий необязательный логический аргумент для сохранения ключа, так что если вы делаете:

$lists_store = array_chunk($lists_store, 10, true); 

он может работать, как вы ожидали

, но вы действительно должны использовать array_slice(), так как array_chunk() делит массив на фрагменты, array_slice() j усть принимает назначенную часть, которая больше подходит для того, что вы ищете

$lists_store = array_slice($lists_store, 0, 10, true); // the last parameter is used to preserve the keys 
+0

спасибо, что сделал трюк .. – codepixlabs

1

Использование array_slice (массив $ массива, Int $ смещение [, Int $ длина = NULL [, BOOL $ preserve_keys = ложь]])

Последний параметр, если установлен «true», тогда ваши ключи будут сохранены.

+0

спасибо за вашу помощь, я пропустил это – codepixlabs

Смежные вопросы