PHP检查是否存在数组键

时间:2017-07-27 10:18:16

标签: php arrays json

我有一个数组,在该数组中我有更多的元素。我想检查是否存在特定元素

  $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
                )
               );

以下是解码的JSON。
收到的JSON有时可能可能包含元素'令牌'。

我想检查$ jsonobj是否有元素'令牌'

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

如何根据数组结构检查?

更新

有时,jsonobj可能不包含任何内容。它可能是空的。如果它是空的,我会收到错误

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

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

您只需要在多维$jsonobj数组中传递索引' user'

喜欢这个

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";
    }
}

答案 2 :(得分:1)

您必须检查$jsonobj数组密钥user。 所以,如果你想检查user数组键,那么你应该这样写,

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

请参阅此Manual

答案 3 :(得分:1)

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

答案 4 :(得分:0)

您始终可以使用此衬纸检查数组中是否存在嵌套键:

Arr::has($jsonobj, 'user.token');
// Or
Arr::has($jsonobj, ['user', 'token']);

如果您想了解更多有关此方法或其他在处理多维数组时有用的方法的信息,请查看此php array library