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

时间:2013-06-22 18:16:33

标签: php mysql

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

应该是这样的:

  • 公司1 /城市A
  • 公司2 /城市B
  • 公司3 /城市C
  • 公司A /城市D(如果在同一个城市,则按字母顺序排列公司名称)
  • 公司B /城市D
  • 公司C /城市D
  • 公司7 /城市E

这是我的代码:

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;

1 个答案:

答案 0 :(得分:2)

我没有在您的示例代码中看到您的城市/公司数组,但是有一个像城市/公司那样的数组 -

$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')
          );

您可以使用array_multisort()

foreach ($array as $key => $row) {
    $city[$key]  = $row['city'];
    $company[$key] = $row['company'];
}

array_multisort($city, SORT_ASC, $company, SORT_ASC, $array);

或使用usort()

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');

示例phpFiddle在http://phpfiddle.org/main/code/jzm-k6f

都将数组返回为(来自print_r($array)

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