根据值的值为变量赋值

时间:2013-08-03 12:02:33

标签: php variables

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

5 个答案:

答案 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)

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