php - 按添加的变量对数组进行排序

标签 php mysql arrays sorting

将变量添加到 mysql 查询的末尾。 现在我需要能够按关联值进行排序。有人可以帮忙吗?我尝试了几种不同的排序方法。

$result2 = mysqli_query($datacon,
    "SELECT * FROM spreadsheet 
        WHERE brand = '$brand' 
            AND package = '$package' 
            AND HIDE_FROM_SEARCH = '0' 
        GROUP BY ACCTNAME $pages->limit");

echo mysqli_error($datacon);
while($row = mysqli_fetch_array($result2)) {
    $lat_B=$row['LATITUDE'];
    $long_B=$row['LONGITUDE'];

    $lat_A = round($lat_A,2);
    $long_A = round($long_A,2);
    $lat_B = round($lat_B,2);
    $long_B = round($long_B,2);
    $distance = new calcDist($lat_A, $long_A, $lat_B, $long_B);
    $distance = $distance->calcDist($lat_A, $long_A, $lat_B, $long_B);
    $distance = round($distance,2);
    $locationSort=array($row);
    $locationSort['distance']=$distance;

    FOR EACH SOMETHING?
}

我修改了之前的帖子以反射(reflect)我对答案的使用。

$result2 = mysqli_query($datacon,"SELECT * FROM spreadsheet WHERE brand = '$brand'
                AND package = '$package' and HIDE_FROM_SEARCH = '0' GROUP BY ACCTNAME $pages->limit");

                echo(mysqli_error($datacon));
                class sortBydistance
                {
                    function sortBydistance($a, $b) {
                        if ($a['distance'] == $b['distance']) {
                            return 0;
                        }
                        return ($a['distance'] < $b['distance']) ? -1 : 1;
                    }
                }
                while($row = mysqli_fetch_array($result2))
                {
                        $lat_B=$row['LATITUDE'];
                        $long_B=$row['LONGITUDE'];

                    $lat_A = round($lat_A,2);
                    $long_A = round($long_A,2);
                    $lat_B = round($lat_B,2);
                    $long_B = round($long_B,2);
                    $distance = new calcDist($lat_A, $long_A, $lat_B, $long_B);
                    $distance = $distance->calcDist($lat_A, $long_A, $lat_B, $long_B);
                    $distance = round($distance,2);


                }
                $locationSort=array($row);
                $locationSort['distance']=$distance;
                uasort($locationSort, array($this, "sortBydistance"));
                print_r($locationSort);

最佳答案

可能您没有正确检索 $bran 和 $package 变量..

$result2 = mysqli_query($datacon,
    "SELECT * FROM spreadsheet 
        WHERE brand = '".$brand."' 
            AND package = '".$package."' 
            AND HIDE_FROM_SEARCH = '0' 
        GROUP BY ACCTNAME ".$pages->limit.");

关于php - 按添加的变量对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21558602/

相关文章:

php - 清除密码而不是更新密码/重置密码

mysql - 通过 MySQL Workbench 将 MS SQL 迁移到 MySQL,打破特殊字符

javascript - 使用php在每行的末尾添加一个逗号

php - 为什么 PDO::lastInsertId 返回 0?

java - JPA OneToOneToOne 映射

javascript - 如何使用 JavaScript 在循环内将数组中的所有项目相乘

c - 将越界索引与从足够大的数组转换而来的较小数组一起使用是否安全?

php - 如何使用 PHP 计算天数中两个字符串日期的差异?

php - 从 Javascript 中的多维 PHP 数组获取值

php - 仅在特定页面上从 WooCommerce 购物车中删除特定产品