初学者。我有两个数组,一个包含我的值( $ m1 ),另一个包含我想用作键( $ pn )(非唯一字符串)。它们具有相同的长度(465),$ pn [0]是$ m1 [0]值的关键。我使用类似这样的foreach循环将它们合并成为键值对:
$result = array ();
foreach($pn as $key => $value){
$result[] = array($value => $m1[$key]);
}
如果我这样做并在$ result上尝试print_r,我会看到分配了键和值。现在我需要获得93个最大值及其相应的键。我尝试使用asort但它没有按值对数组进行排序,它只是以某种方式搞砸了它。如果有人有答案我会非常感激。非常感谢你!
答案 0 :(得分:2)
$result = array_combine(
$pn,
$m1
);
然后asort(),记住参数是通过引用
传递的asort($result);
修改强>
如果您有非唯一键,则使用循环构建组合数组:
$result = array();
foreach($pn as $key => $value){
$result[] = array('key' => $m1[$key], 'value' => $value);
}
然后使用usort()对数组进行排序:
usort(
$result,
function ($a, $b) {
if ($a['value'] == $b['value']) {
return 0;
}
return ($a['value'] > $b['value']) ? -1 : 1;
}
);
使用array_slice()提取前93个条目