是否有可能通過$_GET
獲得空數組(數組中有0項)值?
直接值設定可以嗎?
count($_GET['param'])==0
是否有可能通過$_GET
獲得空數組(數組中有0項)值?
直接值設定可以嗎?
count($_GET['param'])==0
如果數組爲空或包含無關緊要的值。只需聲明一個變量並將$ _GET []傳遞給變量。
例如,
$para=$_GET['param'];
現在
if(is_array($para))
{
//
}
else{
$para=new array();
}
我需要避免額外的分配和條件。 – sectus
你不需要別的塊。只需使用if(count($ para)<1){//您的代碼} else {//具有大於零的值} –
你只需要一個空值,URL = myform.php?param=¶m2=
在形式上只是讓空值:
<input type='text' name='param' value ='' />
對於空數組:
網址:myform.php?param[]=¶m2[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.
謝謝,但是。 'param [] ='不是空數組。它是一個空值的數組。此外,我需要獲得0項沒有額外重新分配的數組。 – sectus
現在,我審查..這是一個很好的問題,但它是不可能的。 查看我的更新。 –
傳遞空數組通過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指出笑話/有趣的答案(如果沒有積極進行賦值@服務器端)
@kingkero,不,isset值會檢查該值爲空或未出現。但是array()不是null值。 – sectus
@RakeshSharma,好吧,我可以重新表述:我怎麼能通過URL發送值來獲得PHP端的空數組值? – sectus
尋找空($ _ GET ['param'])或簡單$ get = $ _GET ['param'];無論是否爲零 –