我正在尝试在PHP中对这个关联数组进行排序,而我发现的所有示例都没有。
未排序的数组构建如下:
//push into array
$displayArray = array_push_assoc($displayArray, 'ContactID', $ContactID);
$displayArray = array_push_assoc($displayArray, 'ContactFirstName', $ContactFirstName);
$displayArray = array_push_assoc($displayArray, 'ContactLastName', $ContactLastName);
$displayArray = array_push_assoc($displayArray, 'Ann_Desc', $CG_Desc);
$displayArray = array_push_assoc($displayArray, 'DaysAway', $daysAway);
我想做的就是按照与'DaysAway'键相关联的值按升序对此数组进行排序
我试过这个:
function cmp($a, $b)
{
if ($a['DaysAway'] == $b['DaysAway']) {
return 0;
}
return ($a['DaysAway'] < $b['DaysAway']) ? -1 : 1;
}
usort($displayArray, 'cmp');
print_r($displayArray);
print "<br>";
但所有这一切似乎是随机排序原始数组中的最后一行
非常感谢帮助。
答案 0 :(得分:0)
删除所有array_push_assoc
,因为该名称没有任何功能。
而只是放$displayArray['ContactID'] = $ContactID;
等等。
您应该在包含每个usort
条目的父数组上调用$displayArray
,而不是$displayArray
本身。
答案 1 :(得分:0)
尝试使用此功能:
function subval_sort($a,$subkey) {
foreach($a as $k=>$v) {
$b[$k] = strtolower($v[$subkey]);
}
asort($b);
foreach($b as $key=>$val) {
$c[] = $a[$key];
}
return $c;
}
$ a将是您要排序的数组,而$ subkey将是您要排序的字段。