-1

私は 60 個の要素を持つ配列を持っています。これは (低いものから高いものへ) 並べ替える必要があり、その並べ替えられた配列の最初の 10 個の要素を別の配列として取得する必要があります。ハマった 。どんな助けでも素晴らしいでしょう!

これまでのところ、私は -

$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
)
4

4 に答える 4

2

の代わりに、3 番目のパラメーター " "array_chunk()を使用します。array_slice()preserve_keys

ここでフィドルを参照してください: http://phpfiddle.org/lite/code/0dr-jht

于 2013-10-11T09:09:58.020 に答える
2

array_chunk()のドキュメントは、キーを保持するための 3 番目のオプションのブール値引数があることを示しています。

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

期待どおりに動作する可能性があります

ただし、配列をフラグメントに分割するため、array_slice()を実際に使用する必要があります。指定された部分を取得するだけで、探しているものにより適合します。array_chunk()array_slice()

$lists_store = array_slice($lists_store, 0, 10, true); // the last parameter is used to preserve the keys
于 2013-10-11T09:10:50.033 に答える