2013-08-03 47 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']]:''; 
}