是否可以通过$_GET
获取空数组(包含0项的数组)值?
是否可以直接设置值?
count($_GET['param'])==0
答案 0 :(得分:1)
您只需要一个空值url = myform.php?param=¶m2=
在表单中,只需将值设为空白:
<input type='text' name='param' value ='' />
对于空数组:
url:myform.php?param[]=¶m2[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(不主动分配@服务器端的值)