我有一个包含 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
)
代替array_chunk()
,使用带有第三个参数 "preserve_keys
" 的 array_slice()
。
请看这里的小提琴:http://phpfiddle.org/lite/code/0dr-jht
如果你想得到数组的一部分,我认为你应该使用array_slice
。
请注意,array_slice(( 将重新排序和重置数字数组 默认情况下为索引。您可以通过设置 preserve_keys是真的。
尝试使用
$lists_store = array_slice($lists_store, 0, 10, true);
参考资料:http://www.php.net/manual/en/function.array-slice.php
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
Use array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] (
最后一个参数如果设置为"true",那么您的密钥将被保留。