0

我正在尝试在 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>";

但这一切似乎是对原始数组中的最后一行进行随机排序

帮助表示赞赏。

4

2 回答 2

0

删除所有这些array_push_assoc,因为没有该名称的功能。

相反只是放$displayArray['ContactID'] = $ContactID;等等。

您应该调用usort包含每个$displayArray条目的父数组,而不是$displayArray本身。

于 2012-10-19T22:04:36.910 回答
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 将是您要排序的字段。

于 2012-10-19T22:07:16.113 回答