日期:2014-05-16  浏览次数:20424 次

array_key_exists()如何配合switch()使用
各位看官,下的代码如何写才能正常运行


switch (array_key_exists('dopost',$_GET())) 
{
case 'dopost':
# code...
break;
case 'edit':
break;

//后面还有好几个

default:
# code...
break;
}


不要用IF 因为IF太多可读性差一点,速度上也会有点打折(只是听说,水平未到这个高度,无法用代码验证)

------解决方案--------------------
foreach($_GET as $k=>$v) {
  switch ($k) {
    case 'dopost':
        # code...
        break;
    case 'edit':
        break;
 
    //后面还有好几个
     
    default:
        # code...
        break;
  }
}


------解决方案--------------------
我觉得你首先应该仔细看下这个函数array_key_exists()的用法和返回值(TRUE
------解决方案--------------------
FALSE)。
http://cn2.php.net/manual/zh/function.array-key-exists.php

其次,foreach不一定就慢。没有绝对快慢,关键取决于用的地方合不合适。$_GET没有多少数据的,因为浏览器的URL地址长度是有限制的。假设你的代码是可以运行的话,在array_key_exists()其实也是个遍历的过程,只不过是预先封装好的而已。

在回头说你的需求。完全可以舍弃掉这个函数array_key_exists();如下:

//url形式:http://localhost?k=dopost
//url形式:http://localhost?k=edit
if(isset($_GET['k'])){
    switch ($_GET['k']) 
    {
        case 'dopost':
            # code...
            break;
        case 'edit':
            break;
 
        //后面还有好几个
         
        default:
            # code...
            break;
    }
}