繁体   English   中英

PHP - 获取带或不带键的 URL 参数

[英]PHP - get URL param with or without key

我知道如何以笨拙冗长的方式执行此操作,但是是否有一种优雅的方法可以从 URL 中检索单个参数,无论 URL 中是否存在键或索引页? 即永远不会有&secondparam=blah

$_GET["slug"]仅在 url 具有slug=foobar时才有效

例如,为这些 URL 中的任何一个返回foobar

site.com/page/index.php?slug=foobar

site.com/page/index.php?foobar

site.com/page/?slug=foobar

site.com/page/?foobar

这是我的解决方案:

$slug = $_GET['slug'] ?? reset(array_keys($_GET));

var_dump($slug);

当未找到slug时,它将返回第一个参数名称。

请注意,当 URL 参数 'slug' 没有值时,它将是一个空字符串,即: ?slugfalse如果根本找不到参数。

也许这更一致一点:

// edit: added redundant parentheses to make operator precedence more clear
$slug = ($_GET['slug'] ?? reset(array_keys($_GET))) ?: null;

var_dump($slug);

...因为它将为前面提到的两个边缘情况返回null

$_GET 实际上是一个包含所有这些信息的数组。

只需使用 if 语句

if(empty($_GET)) {
    continue
}
<?php

function reader()
{
    foreach($_GET as $key => $val)
    {
        if( ! empty($val))
        {
            return $val;
        }
        return $key;
    }
}

echo reader();
?>

解释:首先返回 $value。 如果不为空,则返回该 $key

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM