【问题标题】:Is it possible to get empty array value via $_GET?是否可以通过 $_GET 获取空数组值?
【发布时间】:2014-06-09 09:53:57
【问题描述】:

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

是否可以直接设置值?

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

【问题讨论】:

  • @kingkero,不,isset 值检查值是否为空或不存在。但是 array() 不是空值。
  • @RakeshSharma ,好的,我可以换个说法:我如何通过 url 发送值以在 php 端获取空数组值?
  • 寻找空的($_GET['param']) 或简单的 $get = $_GET['param'];是否为空
  • @RakeshSharma,好的,我需要包含 0 个项目的数组。
  • 就这么简单:httpbin.org/get?a=[]

标签: php arrays get


【解决方案1】:

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

在表单中,只需将值留空:

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

对于空数组

网址:myform.php?param[]=&amp;param2[some_key]=

形式:&lt;input type='text' name='param[]' value ='' /&gt;

来自 Ajax:(我记得这是非常反直觉且难以搜索):

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

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

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

更新:
我做了一些测试,似乎没有办法使用表单或 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.

【讨论】:

  • 谢谢,但是。 param[]= 不是空数组。它是一个空值的数组。另外,我需要获得包含 0 个项目的数组,而无需额外重新分配。
  • 现在我审查了.. 这是个好问题,但这是不可能的。查看我的更新。
【解决方案2】:

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

例如,

$para=$_GET['param'];

现在

if(is_array($para))
{
//  

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

【讨论】:

  • 我需要避免额外的分配和条件。
  • 你不需要 else 阻止。只需使用 if(count($para)
【解决方案3】:

在正常情况下无法通过 GET 传递空数组。也就是说,我可以想到一种非常罕见的方式,您使用的检查将返回 true。

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

上面基本上是一个序列化和urlencoded的空数组,键为'param'

如果目标服务器有某种过滤器可以自动反序列化所有传入数据,那么它可能会发生。 (或类似下面的)

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

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

我知道这有点牵强,但有可能,也许是一些只处理序列化数据但意外向公共开放的私有测试服务器等。 也就是说,它仍然只传递一个序列化的空数组,而不是一个空数组本身。但说实话,这个答案更像是一个笑话/有趣的答案,试图在一些非常罕见的情况下指出

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-01
    • 2023-03-24
    • 2015-05-20
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2016-01-23
    • 2018-01-05
    相关资源
    最近更新 更多