【问题标题】:get the name of the current $_GET variable [duplicate]获取当前 $_GET 变量的名称 [重复]
【发布时间】:2013-07-16 02:55:02
【问题描述】:

我想知道用户访问了哪个 URL。例如,如果用户访问:

index.php?注册

它会回显“1”。

if (isset($_GET))
{
    switch ($_GET)
    {
        case "register":
            echo 1;
        break;
    }
}

但它什么也没做,为什么?如何获取第一个 GET 元素的名称?

【问题讨论】:

  • var_dump($_GET) 看看有什么。
  • 你在 $_GET = register 的情况下,这绝不是真的。您需要遍历 key=>value 对中的数组来检查 switch($key) { case "register" 的位置
  • array_keys, $_REQUEST, isset($_GET['register']), array_key_exists($_GET, 'register')...试过这些吗?
  • 如果你想即时执行,试试:array_keys($GET)
  • 1. $_GET 始终设置。 2、$_GET是一个数组,不能作为string使用。 3. 您可能想要:index.php?act=register 并使用 switch ($_GET['act']) {...}。 4. 3 是快速的解决方案,但很糟糕。

标签: php arrays get


【解决方案1】:

$_GET 是一个关联数组,所以它的结构是 key=value 元素

您可以使用此 URL:index.php?page=register 和此代码:

if (isset($_GET['page']))
{
    switch ($_GET['page'])
    {
        case "register":
            echo 1;
        break;
    }
}

或使用此 URL index.php?register 使用此代码:

foreach ($_GET as $key => $value) {
    switch ($key) {
        case 'register':
            echo 1;
        break;
    }
}

【讨论】:

  • 没有没有理由这样做...
  • 你可以做index.php?register。它只是使$_GET['register'] 成为一个空白字符串。
  • @Neal 你必须否决你看到的一切吗?
  • @Simon_eQ 如果错了?是的。
  • @Neal 看来,你也不知道错误是什么意思..
【解决方案2】:

您可以使用array_keys() 获取每个$_GET 的密钥,然后使用0 index 确定您想对第一个密钥执行什么操作:

if($_GET){
    $keys = array_keys($_GET);
    switch ($keys[0]){
        case "register":
            echo 1;
        break;
    }   
}

【讨论】:

    【解决方案3】:

    $_GET 是一个超全局数组。它始终是设置的,并且始终是一个数组。

    如果您知道 register始终成为第一个 GET 元素,那么您可以这样做:

    reset($_GET);
    switch (key($_GET)){
        case "register":
            echo 1;
        break;
    }
    

    key() 的文档:http://php.net/key

    【讨论】:

    • 如果switch之前的东西移动了指针怎么办?
    • @PLB:我假设$_GET 的指针没有移动,但是我添加了reset($_GET); :-)
    【解决方案4】:

    $_GET 是一个数组。您需要将该 switch 语句放在 foreach 循环中:

    foreach ($_GET as $k => $v) {
        switch ($k) {
            case 'register':
                echo 1;
            break;
        }
    }
    

    另外,$_GET 超全局是总是设置的——不需要if (isset($_GET)) {

    【讨论】:

      猜你喜欢
      • 2013-11-03
      • 1970-01-01
      • 2012-01-14
      • 2011-11-02
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      相关资源
      最近更新 更多