0

很多时候,我尝试用不同的语言编写不同类型的代码。当我试图写这样的东西时:

if (!isset($_GET[""])) $_GET[""] = false;

编译器不报告错误。好的,我们有这个没有变量名的构造。这是在实践中使用这种结构的一种方法吗?我认为这是胡说八道。

我认为只有$_GET在实践中可用,例如:

if (count($_GET) > 0) do something
4

4 回答 4

2

如果您在谈论 $_GET[""] 的可用性 - 您不能使用 URL 设置它。

如果你去 URLtest.php?=3你会得到一个空的$_GET

如果您转到该 URL test.php?""=3,您将能够使用它访问它$_GET["\"\""]

所以没有办法在 URL 中设置一个变量并用它来检索它$_GET[""];

但是,您可以将密钥设置为代码中的空字符串:

$_GET[""] = 3;
echo $_GET['']; // 3
echo $_GET[""]; // 3
于 2013-01-21T08:33:23.460 回答
0

我不明白你想通过这段代码实现什么:

if (!isset($_GET[""])) $_GET[""] = false;

php 可以将空字符串分配为数组键,并且可以像这样访问它:

$array[0]['']

为了您的检查,您可以使用这样的功能,例如:

function GET($key, $default = null) {
    return isset($_GET[$key]) ? $_GET[$key] : $default;
}
于 2013-01-21T08:31:46.810 回答
0

如果您使用 'http://domain.com' 之类的 url 测试以下代码:

print_r($_GET);
echo '<br>';
if(isset($_GET))
{
   echo '$_GET IS SET<br>';
}

if(!empty($_GET))
{
   echo '$_GET IS NOT EMPTY<br>';
}

if(count($_GET) > 0)
{
   echo '$_GET IS NOT EMPTY<br>';
}

你会得到

Array ( ) 
$_GET IS SET

根据这一点,您要检查或记住的内容取决于您,即使您执行http://www.domain.com或此http://www.domain.com/index ,也始终设置 $_GET .php?test=adsf

你对 $_GET[''] = 'smthing' 所做的就像拥有一个数组 arr['test'] = 'smthing'; 尽管您没有提供测试密钥,而是提供了一个空密钥,但在涉及 $_GET 时您无法正确处理。

所以如果你问我,你应该检查一下具体的东西。

if(isset($_GET['test']) && $_GET['test'] == 'adsf')
{
   doSomething();
}

这只是一个简单的例子,应该进行进一步的验证。

于 2013-01-21T08:34:18.180 回答
0

empty($_GET)count($_GET)在这里为我工作!

于 2013-01-21T08:27:49.060 回答