我有一个包含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
)
答案 0 :(得分:2)
如果你想获得数组的一部分,我认为你应该使用array_slice
。
请注意,array_slice()将重新排序并重置数值数组 默认情况下的索引您可以通过设置更改此行为 preserve_keys为TRUE。
尝试使用
$lists_store = array_slice($lists_store, 0, 10, true);
答案 1 :(得分:2)
而不是array_chunk()
,使用array_slice()
和第三个参数“preserve_keys
”。
请参阅此处的小提琴:http://phpfiddle.org/lite/code/0dr-jht
答案 2 :(得分:2)
array_chunk()上的文档表明有第三个可选的布尔参数来保存密钥,所以如果你这样做:
$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
答案 3 :(得分:1)
使用array_slice(array $ array,int $ offset [,int $ length = NULL [,bool $ preserve_keys = false]])
如果设置为“true”,则最后一个参数将保留您的密钥。