如何在php中对关联数组进行排序

时间:2011-03-31 09:06:20

标签: php mysql

我有mysql表,即

id | a | b | c | d |ud_id
 1 | 20| 8 | 45| 18| 1

现在我想在php中检索该数据对数组进行排序并找到此示例中的最高字段(c = 45)

$query="SELECT `a`, `b`, `c`, `d` from table where ud_id=1";
$rs=mysql_query($query) or die(mysql_error());
$row=mysql_fetch_array($rs);


但是我如何对这个关联数组进行排序并找到最高的关键字。

3 个答案:

答案 0 :(得分:5)

PHP有很多排序功能。

一个听起来像你想要的asort()

请参阅PHP手册,了解其他替代方案,例如sort()ksort()natsort()usort()以及其他一些变体。还有shuffle()随机排序。

[编辑] 好的,一步一步从阵列中获取最高价值:

asort($row);  //or arsort() for reverse order, if you prefer.
end($row);  //positions the array pointer to the last element.
print current($row); //prints "45" because it's the sorted highest value.
print key($row); //prints "c" because it's the key of the hightst sorted value.

还有很多其他方法可以做到。

答案 1 :(得分:2)

就像@Spudley所说,arsort就是答案。您可以通过获取其array_keys的第一个键来获取结果数组的第一个键。

// ...
$row = mysql_fetch_assoc ($rs);
arsort ($row);
$keys = array_keys ($row);
printf ("key: %s, value: %s", $keys[0], $row[$keys[0]]);

另请注意mysql_fetch_assoc

答案 2 :(得分:0)

您可以在查询中进行排序 - 请参阅stackoverflow答案: php, sort an array from mysql