让我们假设,
$array1 = array(
array('id'=>'a','age'=>21),
array('id'=>'b','age'=>23),
array('id'=>'c','age'=>56),
array('id'=>'d','age'=>13),
array('id'=>'a','age'=>24)
);
这里我想提取具有最大年龄的条目(假设有三个条目)并存储在一个新数组中,例如$max_array。
$max_array = array(
array('id'=>'c','age'=>56),
array('id'=>'a','age'=>24),
array('id'=>'b','age'=>23)
);
在这里,我所做的是,从StackOverflow本身发现,首先使用array_keys($array1,max($array1))找到具有最大值的条目,然后将其存储在$max_array中,从$array1中弹出它,然后重做该过程3次。
但是由于在$array1中,第一个键是id,它取id的最大值,而不是年龄。如果不遵循代码工作良好,请让我知道,如果我能使它更有效。
$max_ppl=array();
for ($i=0; $i <3 ; $i++) {
$max_ppl[] = max($array1);
$ppl_time_sort = (array_keys($array1,max($array1)));
unset($array1[$ppl_time_sort[0]]);
}
print_r($max_ppl);
列age
在使用array_column()
的数组中,然后使用array_multisort()
进行排序。
<?php
$arr1 = array_column($array1, 'age');
array_multisort($arr1, SORT_DESC, $array1);
var_dump($array1);
你可以这样试试,既简单又方便;
$array1 = array(
array('id'=>'a','age'=>21),
array('id'=>'b','age'=>23),
array('id'=>'c','age'=>56),
array('id'=>'d','age'=>13),
array('id'=>'a','age'=>24)
);
$ages = array_map(function($v){
return $v['age'];
}, $array1);
array_multisort($ages, SORT_DESC, $array1 );
var_dump($array1, array_slice($array1, 0, 3));
对前三个值使用array_multisort和array_slice如果你想得到三个小的改变
array_multisort($Ages, SORT_DESC, $array); // SORT_DESC for SORT_ASC
代码完成
echo "<pre>";
$Ages= array();
foreach ($array as $key => $row)
{
$Ages[$key] = $row['age'];
}
array_multisort($Ages, SORT_DESC, $array);
print_r(array_slice($array,0, 3));
echo "</pre>";