Php 对两个或多个数组进行排序和合并
我有以下两个阵列:Php 对两个或多个数组进行排序和合并,php,arrays,Php,Arrays,我有以下两个阵列: [BA] => Array ( [0] => Array ( [num] => 55 [val] => 1 ) [1] => Array ( [num] => 41 [val] => 5
[BA] => Array
(
[0] => Array
(
[num] => 55
[val] => 1
)
[1] => Array
(
[num] => 41
[val] => 5
)
[2] => Array
(
[num] => 65
[val] => 27
)
[3] => Array
(
[num] => 60
[val] => 28
)
[4] => Array
(
[num] => 70
[val] => 90
)
[5] => Array
(
[num] => 78
[val] => 113
)
[6] => Array
(
[num] => 85
[val] => 119
)
)
[GE] => Array
(
[0] => Array
(
[num] => 76
[val] => 1
)
[1] => Array
(
[num] => 26
[val] => 6
)
[2] => Array
(
[num] => 69
[val] => 11
)
[3] => Array
(
[num] => 64
[val] => 48
)
[4] => Array
(
[num] => 9
[val] => 85
)
[5] => Array
(
[num] => 36
[val] => 112
)
[6] => Array
(
[num] => 90
[val] => 127
)
)
我需要按“val”对上述两个数组进行降序排序,并将它们合并为一个数组,如下所示:
[new] => Array
(
[0] => Array
(
[ruota] => 'GE'
[num] => 90
[val] => 127
)
[1] => Array
(
[ruota] => 'BA'
[num] => 85
[val] => 119
)
[2] => Array
(
[ruota] => 'BA'
[num] => 78
[val] => 113
)
[3] => Array
(
[ruota] => 'GE'
[num] => 36
[val] => 112
)
[4] => Array
(
[ruota] => 'BA'
[num] => 70
[val] => 90
)
[5] => Array
(
[ruota] => 'GE'
[num] => 9
[val] => 85
)
[6] => Array
(
[ruota] => 'GE'
[num] => 64
[val] => 48
)
)
拜托,有人能帮我吗?
提前非常感谢!:) 首先向每个数组添加密钥,例如:
foreach (array($ba, $ge) as &$array) {
foreach ($array as $key => &$values) {
foreach ($values as &$value) {
$value['ruota'] = $key;
}
}
}
然后合并,例如:
$values = array_merge(array_values($ba), array_values($ge));
然后进行排序,例如:
usort($values, function($a, $b) {
if ($a['val'] == $b['val']) {
return 0;
}
return ($a['val'] < $b['val']) ? -1 : 1;
});
usort($value,function($a,$b){
如果($a['val']=$b['val']){
返回0;
}
报税表($a['val']<$b['val'])?-1:1;
});
注意:上面可能有一两个错误,但这应该会让您走上正确的道路。这是一项非常简单的任务,可以通过简单的循环来完成(不要害怕循环) 步骤1:合并和填充阵列
// Merge Both arrays
$array = $ba + $ge; // or array_merge($ba,$ge);
// New Array
$new = [];
// Start Loop to pad array
foreach($array as $ruota => $var) {
foreach($var as $v) {
$v['routa'] = $ruota; // add routa to each element
$new[] = $v;
}
}
步骤2:排序和输出数组
// Sort Values
usort($new, function ($a, $b) {
return $b['val'] - $a['val']; // Sort Decending
});
// Output Result
print_r($new);
应以何种方式合并它们,以使所需结果仅包含原始数据的一半?@Armali合并它们,按“val”排序,并仅返回前6个。您的意思是:前7个。@Armali是的,因为它是基于0的