2017-07-27 454 views
0

我有一個數組,我有更多的元素。我想檢查是否一個特定的元素存在PHP檢查數組鍵是否存在

$jsondata = file_get_contents('php://input'); 
    $jsonobj = json_decode($jsondata, true); 

可能性1

$jsonobj=Array(
     [user] => Array 
      (
       [userId] => 1501148600220 
       [locale] => en-US 
       // no TOKEN 
      ) 
); 

可能性2

$jsonobj=Array(
      [user] => Array 
       (
        [userId] => 1501148600220 
        [locale] => en-US 
        [token] => 12345 // TOKEN exist 
       ) 
       ); 

的follwing是解碼JSON。
收到的JSON有時可能可能不包含元素'標記'的

我要檢查,如果$ jsonobj有元素「令牌」

if (array_key_exists('token', $jsonobj)) { 
    echo "Element is in the array"; 
    } 

我如何根據我的陣列結構檢查這個?

UPDATE

有時候,jsonobj可能不包含任何東西。它可能是空的。如果它是空的我得到一個錯誤

PHP Warning: array_key_exists() expects parameter 2 to be array 
+0

那麼,你顯然解碼JSON _string_有一個對象或數組,然後檢查該元素或屬性是否存在。這裏有什麼問題? – arkascha

回答

2

你只需要通過指數'用戶'多維$jsonobj陣列中

喜歡這個

if (array_key_exists('token', $jsonobj['user'])) { 
    echo "Element is in the array"; 
} 

修改: -

$jsonobj=json_decode($jsonobj,true); 
if(!empty($jsonobj['user'])&&is_array($jsonobj['user'])) 
{ 
    if (array_key_exists('token', $jsonobj['user'])) { 
     echo "Element is in the array"; 
    } 
} 
+0

我得到一個錯誤,PHP警告:array_key_exists()期望參數2是數組 – Elo97234c

+0

嘗試修改答案 –

+0

完美地工作! – Elo97234c

3
if (array_key_exists('token', $jsonobj['user'])) { 
    echo "Element is in the array"; 
} 
+0

我得到一個錯誤,PHP警告:array_key_exists()期望參數2是數組 – Elo97234c

+0

是的。這是空陣列的情況。只是看到有人把這件事整理出來。尼斯 – astrocrack

1

您必須檢查您的$jsonobj陣列密鑰是user。 所以,如果你想檢查user數組鍵,那麼你應該這樣寫,

if (array_key_exists('token', $jsonobj['user'])) 
{ 
    echo "Element is in the array"; 
} 

看到這個Manual

1
foreach($jsonobj as $obj => $val){ 
    if(is_array($val)){  
     if(array_key_exists('token', $val)){ 
      echo 'exist'; 
     }else{ 
      echo 'not exist'; 
     } 
    } 
}