尝试按一个键对PHP关联数组进行排序

时间:2012-10-19 22:01:31

标签: php sorting associative-array

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

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

非常感谢帮助。

2 个答案:

答案 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将是您要排序的字段。