如何使用PHP按字母顺序获取数据

如何使用PHP按字母顺序获取数据,php,mysql,Php,Mysql,我正在处理其他人的代码,并尝试按字母顺序获取国家列表(通过单击地图生成)的数据 应该是这样的: 公司1/城市A 公司2/城市B 公司3/城市C 公司A/城市D(如果在同一城市,则按公司名称的字母顺序排列) B公司/城市D C公司/城市D 公司7/东城 这是我的代码: break; default: // THIS IS THE TITLE LIKE NOTRH AMERICA $ret .= '

我正在处理其他人的代码,并尝试按字母顺序获取国家列表(通过单击地图生成)的数据

应该是这样的:

  • 公司1/城市A
  • 公司2/城市B
  • 公司3/城市C
  • 公司A/城市D(如果在同一城市,则按公司名称的字母顺序排列)
  • B公司/城市D
  • C公司/城市D
  • 公司7/东城
这是我的代码:

break;
    default:                            // THIS IS THE TITLE LIKE NOTRH AMERICA
      $ret .= '
            <div class="casino_country_box">
                <a class="all_contry_link" href="' . $lang . '/casino/continent/' . $continent . '/all/1">' . l::open_all() . '</a>
                <div class="casino_country_box_title">  
                    <p>' . $cont_db['name_' . $lang] . '</p>
                </div>
                <div class="casino_cuntry_link ';   // THIS IS FOR THE COUNTRY TOP BOX
      if ($this->data->getGet('all', 'int'))
        $ret .= 'show_all';             // IF "SHOW ALL" THEN SHOW COMPANIES IN THE ALL COUNTIES
      $ret .= '">
            ';
      foreach ($contry as $g => $v) {   // FOR EACH COUNTRY 
        if ($_GET['country'] && $_GET['country'] == $v['id'])
          $ret .= '<a style="color:orange; text-decoration: underline !important;" href="' . $lang . '/casino/continent/' . $continent . '/' . $v['id'] . '">' . $v['name_' . $lang] . '</a>';
        else {
          if ($v['active'] == 1)        // IF THE COUNTRY IS ACTIVE = LINK IS ACTIVE
            $ret .= '<a href="' . $lang . '/casino/continent/' . $continent . '/' . $v['id'] . '">' . $v['name_' . $lang] . '</a>';
          else                          // IF THE COUNTRY IS NOT ACTIVE = NO ACTIVE LINK
            $ret .= '<a href="javascript:void(0)" class="no_active">' . $v['name_' . $lang] . '</a>';
        }
      }
      $ret .= '</div></div>';
break;
break;
默认值://这是类似NOTRH AMERICA的标题
$ret.='
"$cont_db['name.'$lang].'

'; foreach($contry as$g=>$v){//每个国家 如果($\u GET['country']&&&$\u GET['country']==v['id']) $ret.=''; 否则{ if($v['active']==1)//如果国家/地区处于活动状态=链接处于活动状态 $ret.=''; else//如果国家/地区未处于活动状态=无活动链接 $ret.=''; } } $ret.=''; 打破
在示例代码中,我没有看到您的城市/公司数组,而是使用类似于的城市/公司数组-

$array = array(
               array('company'=> 'Google', 'city'=> 'Dallas'),
               array('company'=> 'Sony', 'city'=> 'Albuquerque'),
               array('company'=> 'IBM', 'city'=> 'Dallas'),
               array('company'=> 'GE', 'city'=> 'Boston'),
               array('company'=> 'Apple', 'city'=> 'Dallas'),
               array('company'=> 'Dell', 'city'=> 'El Paso'),
               array('company'=> 'Skype', 'city'=> 'Chicago')
          );

你可以用


或使用


示例phpFiddle位于

两者都返回数组作为(从
打印($array)


尽管在查询中排序总是很好的

SELECT ... ORDER BY city asc, company asc

循环前db查询排序排序
按国家asc排序,公司asc排序
-非常感谢您的回复,我知道这是我一直在寻找的,但由于我的PHP技能不是很好,我想问您一些我可能没有正确理解的问题。如果我使用array=array的顶级解决方案,这是否意味着我必须为每个公司/城市创建一个阵列?由于我的数据库中有近1000家公司,手动执行此操作将很困难。您提到了几种方法—请您为具有php初学者知识的人提供最简单的解决方案。使用第一个示例—
array\u multisort()
—您不需要为每个公司/城市创建数组。您只需要为每个要订购的列(您说的是city,然后是company)创建一个数组。您可以轻松地使用这些示例中的任何一个,只需将
$array
更改为您的数组名称即可。例如,如果它在您的
foreach($g=>$v){}
循环中,您可以将它更改为-
foreach($key=>$row){…}
&
array\u multisort($city,SORT\u ASC,$company,SORT\u ASC,$v)function mySort($a,$b) {
    if ($a['city'] == $b['city']) {
        return strcmp($a["company"], $b["company"]);
    } else {
        return strcmp($a["city"], $b["city"]);
    }
}
usort($array, 'mySort');
Array
(
    [0] => Array
        (
            [company] => Sony
            [city] => Albuquerque
        )

    [1] => Array
        (
            [company] => GE
            [city] => Boston
        )

    [2] => Array
        (
            [company] => Skype
            [city] => Chicago
        )

    [3] => Array
        (
            [company] => Apple
            [city] => Dallas
        )

    [4] => Array
        (
            [company] => Google
            [city] => Dallas
        )

    [5] => Array
        (
            [company] => IBM
            [city] => Dallas
        )

    [6] => Array
        (
            [company] => Dell
            [city] => El Paso
        )

)
SELECT ... ORDER BY city asc, company asc