簡體   English   中英

isset()或array_key_exists()不能與$ _POST一起使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM