2013-08-03 52 views
0

要做到这一点,我已经使用了下面的代码,但是说如果我有更多的值我想分配给变量,这个方法将变得非常不切实际。还有哪些其他方法可以达到同样的效果,但效率更高。注意:我知道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)'; 
    } 
} 

回答

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 
} 
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)'; 
} 
0
$sorting=array(
    '', 'topic_id', 'topic_id DESC', 
    'mysql_num_rows($query) DESC', 
    'mysql_num_rows($query)' 
); 

$sort=$sorting[(integer)$_GET['sort_by']; 

(顺便说一句:你真的应该对DBMS数据进行排序,并避免运行多个查询)

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']]:''; 
}