2014-06-09 100 views
2

是否有可能通過$_GET獲得空數組(數組中有0項)值?

直接值設定可以嗎?

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

@kingkero,不,isset值會檢查該值爲空或未出現。但是array()不是null值。 – sectus

+0

@RakeshSharma,好吧,我可以重新表述:我怎麼能通過URL發送值來獲得PHP端的空數組值? – sectus

+0

尋找空($ _ GET ['param'])或簡單$ get = $ _GET ['param'];無論是否爲零 –

回答

0

如果數組爲空或包含無關緊要的值。只需聲明一個變量並將$ _GET []傳遞給變量。

例如,

$para=$_GET['param']; 

現在

if(is_array($para)) 
{ 
// 

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

我需要避免額外的分配和條件。 – sectus

+0

你不需要別的塊。只需使用if(count($ para)<1){//您的代碼} else {//具有大於零的值} –

1

你只需要一個空值,URL = myform.php?param=&param2=

在形式上只是讓空值:

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

對於空數組

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

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

從阿賈克斯:(我記得這是如此反直覺的,難以搜索):

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

解決方法: 只需編輯back-結束,如果對於params沒有數據或者它不是一個數組(空,空不管..)只是分配一個空字符串給它:

$param = (isset($_GET['param']) && 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. 
+0

謝謝,但是。 'param [] ='不是空數組。它是一個空值的數組。此外,我需要獲得0項沒有額外重新分配的數組。 – sectus

+0

現在,我審查..這是一個很好的問題,但它是不可能的。 查看我的更新。 –

0

傳遞空數組通過GET正常的情況下是不可能的。也就是說,我可以想到一個非常罕見的方式,即你使用的檢查將返回true。

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

以上基本上是一個序列化和url編碼與鑰匙「PARAM」

空數組,如果目標服務器有某種過濾器,自動反序列化所有輸入數據,那麼它可能會發生的。 (或類似的下面)

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

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

我知道這是一個遠取,但它是可能的,也許一些私人測試服務器只處理序列化的數據卻意外地向公衆開放e.t.c.這就是說,它仍然只傳遞一個序列化的空數組而不是一個空數組本身。不過,說實話,這個答案更像是試圖在一些非常罕見的情況下

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

將返回true指出笑話/有趣的答案(如果沒有積極進行賦值@服務器端)

相關問題