如何使用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