为了做到这一点,我使用了下面的代码,但是如果我有更多的值要分配给变量,那么这个方法将变得非常不实用。还有哪些方法可以达到同样的效果,但效率更高。注意:我知道mysql已被折旧。
if(isset($_GET['sort_by'])){
if($_GET['sort_by'] == 1){
$sort = 'topic_id';
}
if($_GET['sort_by'] == 2){
$sort = 'topic_id DESC';
}
if($_GET['sort_by'] == 3){
$sort = 'mysql_num_rows($query) DESC';
}
if($_GET['sort_by'] == 4){
$sort = 'mysql_num_rows($query)';
}
}
答案 0 :(得分:1)
您可以使用switch case
之类的
switch($_GET['sort_by']) {
case 1:
$sort = 'topic_id';
break;
case 2:
$sort = 'topic_id DESC';
break;
case 3:
$sort = 'mysql_num_rows($query) DESC';
break;
default:
$sort = 'mysql_num_rows($query)';
}
答案 1 :(得分:1)
使用一些查找数组:
$sort_look_up = array(
1 => 'topic_id',
2 => 'topic_id DESC',
....
// add variants here
);
// then
if (isset($_GET['sort_by'])) {
if (array_key_exists($_GET['sort_by'], $sort_look_up))
$sort = $sort_look_up[$_GET['sort_by']];
else
$sort = ''; // set some default sort
}
答案 2 :(得分:0)
使用Switch case而不是这样做。 以下是链接: http://php.net/manual/en/control-structures.switch.php http://www.w3schools.com/php/php_switch.asp
答案 3 :(得分:0)
$sorting=array(
'', 'topic_id', 'topic_id DESC',
'mysql_num_rows($query) DESC',
'mysql_num_rows($query)'
);
$sort=$sorting[(integer)$_GET['sort_by'];
(顺便说一句:实际上你应该在DBMS上对数据进行排序,避免运行多个查询)
答案 4 :(得分:0)
您也可以使用此...请检查语法..
$queryArr=array("topic_id","topic_id DESC","mysql_num_rows($query) DESC","mysql_num_rows($query)");
$sort='';
if(isset($_GET['sort_by'])){
$sort = (isset($queryArr[$_GET['sort_by']]))?$queryArr[$_GET['sort_by']]:'';
}