是否可以通过$ _GET获取空数组值?

时间:2014-06-09 09:53:58

标签: php arrays get

是否可以通过$_GET获取空数组(包含0项的数组)值?

是否可以直接设置值?

count($_GET['param'])==0

3 个答案:

答案 0 :(得分:1)

您只需要一个空值url = myform.php?param=&param2=

在表单中,只需将值设为空白:

<input type='text' name='param' value ='' />

对于空数组

url:myform.php?param[]=&param2[some_key]=

格式:<input type='text' name='param[]' value ='' />

来自Ajax:(我记得这很反直觉,难以搜索):

ajax{
    ...
    data: {'params[]':'','params2[some_key]':''}
}

解决方法: 只需编辑后端,如果没有params的数据,或者它不是数组(null,清空......),只需为其分配一个空字符串:

$param = (isset($_GET['param']) && is_array($_GET['param']))? $_GET['param'] : array();

<强>更新
我做了很少的测试,似乎没有办法把#34;什么都没有&#34;在请求中使用表单或ajax 0''Null$_GET的有效值,但甚至没有创建空数组。 所以要回答你的问题,从前端获取空数组值是不可能

在后端手动编辑$ _GET的选项很少:

<?php
    if(!isset($_GET['param']) || !$_GET['param']){ //not set or (null,0,"")
        $_GET['param'] = array();
    }
    if(count($_GET['param'])==0){...}; // 0 if no 'param' was provided.

答案 1 :(得分:0)

如果数组为空或包含不重要的值。只需声明一个变量并将$ _GET []传递给变量。

例如,

$para=$_GET['param'];

现在

if(is_array($para))
{
//  

} 
else{
$para=new array();
}

答案 2 :(得分:0)

在正常情况下,

通过GET传递空数组是不可能的。也就是说,我可以想到一种非常罕见的方式,你使用的检查将返回真实。

http://domain.com/receiver?param=a%3A0%3A%7B%7D

上面基本上是一个序列化和urlencoded的空数组,其中包含键&#39; param&#39;

如果目标服务器具有某种自动反序列化所有传入数据的过滤器,则可能会发生这种情况。 (或类似下面的内容)

foreach($_GET as $key => $value){
$_GET[$key] = unserialize($value);
}

count($_GET['param'])==0

我知道这是一个远程获取,但它是可能的,也许一些私人测试服务器只处理序列化数据,但不小心打开公共e.t.c. 也就是说,它仍然只传递一个序列化的空数组而不是一个空数组本身。但说实话,这个答案更像是一个笑话/有趣的答案,试图在一些非常罕见的情况下指出

count($_GET['param'])==0

将返回true(不主动分配@服务器端的值)