php - 根据给定的字符串对数组进行排序

标签 php codeigniter sorting usort

我有一个来自数据库的结果集的 php 数组。

由于我不太熟悉 mySQL 排序,我想根据特定字符串“madhapur”对结果集进行排序

$arr=array(    
    array("name" => 'madhapur',"population" =>'1000'),
    array("name" => 'jubiliee hills',"population" =>'800'),
    array("name" => 'madhapur',"population" =>'900'),
    array("name" => 'adikmet',"population" =>'200'),
    array("name" => 'sr nagar',"population" =>'3000'),
    array("name" => 'jubilee hills',"population" =>'1200'),
    array("name" => 'madhapur',"population" =>'1000')   
    );

我期待的结果如下

$arr=array(
array("name" => 'madhapur',"population" =>'1000'),
array("name" => 'madhapur',"population" =>'1000'),
array("name" => 'madhapur',"population" =>'900'),
array("name" => 'adikmet',"population" =>'200'),
array("name" => 'jubilee hills',"population" =>'1200'),
array("name" => 'jubiliee hills',"population" =>'800'),
array("name" => 'sr nagar',"population" =>'3000'),
);

我尝试使用 usort,但它们都用于降序或升序排序。

function sortByName($a,$b){
         return $b['name'] - $a['name'];
    }
usort($arr,'sortByName');

最佳答案

在您的sql中按名称和人口进行第一个排序,因为您的示例似乎显示了以这种方式排序的所有内容,除了提升到顶部的特定名称(madhapur)之外

(注意DB类是一个例子,因为我不知道你使用什么数据库访问方法):

$arr = DB::Query("SELECT name, population 
                  FROM tablename 
                  ORDER BY name ASC, population DESC");

然后你可以迭代数组,并将具有你想要的名称的元素放在开头:

function nameAtFront($arr, $name){

    $copy = $arr;
    $total = count($arr);
    while($total--){
        if($copy[$total]['name']==$name){
            unset($arr[$total]);
            array_unshift($arr, $copy[$total]);
        }
    }
    return $arr;
}
$out = nameAtFront($arr, 'madhapur');
var_dump($out);

关于php - 根据给定的字符串对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34744860/

相关文章:

php - Drupal 7 - file.inc - file_put_contents(临时 ://fileXXXXXX): failed to open stream

php - mySQL 未将名称值分配给 PHP 变量

php - Codeigniter 2.1.3 的 SMTP Gmail 错误

php - Codeigniter 无法删除 cookie

php - 为什么我的 .htaccess 在部署时停止工作

php - 为什么我在 php 中发送邮件时不接受用户名和密码?

php - 快速插入 250k 行

javascript - mixitup 在页面加载后初始启动时计算可见项目

c++ - C++ 中更大/更小的函数对象

java - 将不同类型的对象分类到一个列表中