2014-06-26 34 views
0

我想获得的参数中的一个关键,例如http://link.com/?parameterPHP:如何得到钥匙URL参数

我读的地方,关键是NULL和值将是parameter。我试过$_GET[NULL],但它似乎没有工作。

这里是我的代码:

​​

它只是打印出..这样就意味着我不这样做是正确的。有人能告诉我正确的方法吗?

+0

试着像得到与?开头的URL的一部分'如果($ _ GET ['parameter'] == NULL)' – Bora

+0

$ _GET superglobal是一个数组。当你做一些类似mypage.php?参数的事情时,你正在为它添加一个键而不分配一个值。你将有$ _GET = array(“parameter”=>“”)。那就是PHP 101 – thedethfox

+0

讨论之前回答我可以用空键创建一个数组...... – itzmukeshy7

回答

3

在PHP中没有无关键URL参数。 ?parameter等于$_GET['parameter']被设置为空字符串。

试着做var_dump($_GET)与像http://link.com/?parameter网址,看看你得到什么。

它应该是这个样子:

array (size=1) 'parameter' => string '' (length=0)

因此,你可以在一对夫妇的方式测试它取决于你的应用需求:

if (isset($_GET['parameter'])) { 
    // do something 
} else { 
    // do something else 
} 

// Only recommended if you're 100% sure that 'parameter' will always be in the URL. 
// Otherwise this will throw an undefined index error. isset() is a more reliable test. 

if ($_GET['parameter'] === '') { 
    // do something 
} else { 
    // do something else 
} 
0

$_GET是超级全局assoc数组,其中包含parameter =>it's value对。所以,parameter是数组的关键。

例如,如果您的网址是这样的:myweb.com/?page=load&do=magic比你$_GET是:

$_GET(
    [page] => load 
    [do] => magic 
) 

如果你想只是为了测试,如果parameter是在你的网址为PARAM,你应该这样做这个:

if (isset($_GET['parameter']) 
    echo "Here I am!"; 
0

你也可以像这样得到整个request_url

echo $_SERVER['REQUEST_URI']; 

?后得到部分:

echo explode('?', $_SERVER['REQUEST_URI'])[1]; 
+0

很糟糕的解决方案。如果他想要添加另一个参数来请求呢? – ovnia

+0

@wingsofovnia,只是提供了一个不同的方式来做到这一点。在某些情况下可能会派上用场:) – Fabricator

0

你可以通过array_keys()

$param = array_keys($_GET)[0]; 

这将使你的第一个查询参数的名称,它是否有一个值或不。

你也可以得到所有的参数没有值,像这样:

$empty = []; 
foreach($_GET as $key => $value) 
    if(strlen($value) === 0) $empty[] = $key; 

print_r($empty); 
0

您可以

$_SERVER['QUERY_STRING']