按行值对数据库行数组进行排序

时间:2014-10-11 04:40:33

标签: php arrays sorting

这是我的PHP脚本。我想要做的是通过键对响应数组进行排序。我希望对数组进行排序的关键是行的一个组件。为了更好地澄清,说该行包含一个字符串和一个int类型对象。如何使用int对象作为键对数组进行排序?我看过ksort()并了解如何使用它,但我不确定如何以我试图的方式使用它。

<?php

// array for JSON response
$response = array();


$host = "localhost"; //server
$db = "Test"; //database name
$user = "root"; //dabases user name
$pwd = "xxxxxxx"; //password


    $link = mysqli_connect($host, $user, $pwd, $db);
    $result = mysqli_query($link, "SELECT * FROM Table");


    // check for empty result
    if (mysqli_num_rows($result) > 0) 
    {

        $response["stuff"] = array();
        $event = "";

         while ($row = mysqli_fetch_array($result)) {

            $event = $row;
            $response[] = event;

         } 

      //Here I wish to sort the array by the int object as key.
     $response["success"] = 1;

    echo json_encode($response);
}
 ?>

1 个答案:

答案 0 :(得分:0)

上面的评论可能会回答这个特定的要求,但我还想描述如何对问题海报想要的PHP数组进行排序:

选择的方法不是ksort()(按键排序),而是
usort (&$array, $value_compare_func)(按用户定义的回调排序):

usort($response['stuff'], function($a, $b) {
    return $a['integer'] - $b['integer'];
});

闭包函数是使用数组成员作为操作数的简单整数比较(在本例中使用键integer)。
在比较其他类型的值时,应调整比较函数以满足usort()的要求。例如。对于字符串,可以使用strcmp()