[英]Multidimensional Array - sort index value keys
您将如何对多维数组索引进行排序?
我有这个数组结构
Array
(
[Amie] => Array
(
[0] => Amie
[1] => 10
[3] => 10.9%
[4] => 0.0
[5] => 14.3
[6] => 2.4
[7] => 1510.4
[8] => 209.7
[9] => 0
[10] => 0.0
[11] => 0
[12] => 0.0
[13] => 0.0
[14] => 0.0%
[15] => 6
[17] => 100.0%
[18] => 0.0%
[2] => 1
)
[Darren D] => Array
(
[0] => Darren D
[1] => 20
[3] => 3.6%
[4] => 0.5
[5] => 0.0
[6] => 0.0
[7] => 2148.6
[8] => 193.6
[9] => 0
[10] => 0.0
[11] => 27418.4
[12] => 6854.6
[13] => 2.0
[14] => 2.8%
[16] => 2
[17] => 0.0%
[18] => 100.0%
[2] => 0
)
}
索引2在每个数组的最后一个位置。 这是最后一个,因为我在处理数组的末尾附加了值并分配了索引键2。
使用以下命令创建数组:
foreach($combinedArray as $agent) {
// @Debug
// echo 'AGENTS'.'<pre>'; print_r($agents); echo '</pre>';
if(!isset($agents[$agent[0]])) {
//Never met the agent, add them.
$agents[$agent[0]] = $agent;
} else {
//We already seen the agent, do maths.
$agents[$agent[0]][1] += $agent[1];
if(isset($agent[2]) && isset($agents[$agent[0]][2])) {
$agents[$agent[0]][2] += $agent[2];
} else if(isset($agent[2])) {
$agents[$agent[0]][2] = $agent[2];
}
$agents[$agent[0]][7] += $agent[7];
$agents[$agent[0]][9] += $agent[9];
$agents[$agent[0]][11]+= $agent[11];
}
}
然后,如果仍然缺少索引2,则将整个数组传递给使用
$newArray = $this->missingKeyValueFiller($agents);
private function missingKeyValueFiller($array) {
foreach ($array as $key => $value) {
if(!isset($value[2])) {
$array[$key][2] = 0;
}
}
return $array;
}
这样可以确保end数组始终具有内部带有某些值的索引2。
我试过使用ksort()
, asort()
, multisort()
但索引2仍显示在末尾。
排序功能接受sort_flags: http ://php.net/manual/en/function.sort.php
通过SORT_NATURAL
作为排序模式:
ksort($array, SORT_NATURAL);
以下代码:
<?php
$array = [
[
1 => 'a',
3 => 'b',
20 => 'c',
2 => 'd',
],
[
1 => 'a',
3 => 'b',
20 => 'c',
2 => 'd',
],
];
foreach ($array as &$subarray) {
ksort($subarray, SORT_NATURAL);
}
var_dump($array);
会给你:
array(2) {
[0]=>
array(4) {
[1]=>
string(1) "a"
[2]=>
string(1) "d"
[3]=>
string(1) "b"
[20]=>
string(1) "c"
}
[1]=>
&array(4) {
[1]=>
string(1) "a"
[2]=>
string(1) "d"
[3]=>
string(1) "b"
[20]=>
string(1) "c"
}
}
<?php $array='yourarray';
array_walk($array,"sorting");
function sorting(&$item,$key){
ksort($item);
}
print_r($array);
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.