0

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

它应该是这样的:

  • 公司 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;
4

1 回答 1

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

都将数组返回为 (from 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
于 2013-06-22T18:56:03.950 回答