[英]isset() or array_key_exists() doesnt work with $_POST
我有一個非常簡單的代碼,我不知道我做錯了什么。 我用Ajax發送post變量,有3個復選框(數組)name =“options []”..我收到正確的數組,如果我檢查Option1,Option2或Option3,我得到正確的數組..但是當我嘗試使用isset()或使用array_key_exist()檢查並確認它們,但它沒有給我正確的答案。例如,如果我只檢查選項1和3,我在POST中得到以下內容
[options] => Array
(
[0] => option_one
[1] => option_two
)
我只需要在數組中不存在某個鍵時才需要執行某些操作..我嘗試過類似下面的內容。
if (array_key_exists("option_one", $_POST['options'])) {
echo "Option one exists";
} else {
echo "option one does not exist";
}
它返回flase結果,然后我嘗試使用! (之前),返回相同的結果。 然后我嘗試使用isset($ _ POST ['options'] ['option_one'])沒有任何運氣..然后我嘗試了以下函數在數組中再次檢查..
function is_set( $varname, $parent=null ) {
if ( !is_array( $parent ) && !is_object($parent) ) {
$parent = $GLOBALS;
}
return array_key_exists( $varname, $parent );
}
並像這樣使用它
if (is_set("option_one", $_POST['options'])) {
echo "Option one exists";
} else {
echo "option one does not exist";
}
什么都行不通,它只是返回假值。 我嘗試使用$ _REQUEST而不是$ _POST但沒有運氣,我已經閱讀了許多線程,isset()或array_key_exists()返回錯誤的值。這是什么解決方案? 任何幫助都將受到高度贊賞..我現在已經厭倦了..
問候
option_one
不是數組中的鍵 ,它是一個值 。 關鍵是0
。 如有,請使用:
in_array('option_one', $_POST['options'])
array_key_exists查找數組的鍵。 你正在尋找價值。 :)
你想要的是什么
/**
* Check wheter parameter exists in $_POST['options'] and is not empty
*
* @param $needle
* @return boolean
*/
function in_options($needle)
{
if (empty($_POST['options']))
return false;
return in_array($needle, $_POST['options']);
}
您確定在選項[]數組中獲得了正確的信息嗎? 如果單擊選項1和選項3,那么數組看起來不應該是這樣的嗎?
[options] => Array
(
[0] => option_one
[1] => option_three
)
由於isset()
是一種語言結構而不是函數 ,因此您可以重新進行驗證以提高效率。
function in_options($needle)
{
//Checking that it is set and not NULL is enough here.
if (! isset($_POST['options'][0]))
return false;
return in_array($needle, $_POST['options']);
}
該功能empty()
的作品 ,但我認為, $_POST['options'][0]
只需要檢查isset()
在這一點上 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.