首页 > 解决方案 > 如何查看json数组是否包含值?

问题描述

所以,我是 php 新手,在测试一些服务时,我有一个 JSON 对象:

{
  "entry": [
    {
      "authorId": "@me",
      "type": "USER"
    },
    {
      "authorId": "514",
      "type": "USER"
    },
    {
      "authorId": "516",
      "type": "USER"
    }
  ],
  "count": 3,
  "totalResults": 3
}

我需要断言“@me”是这个对象的一部分。我试过类似的东西:

$Obj->assertTrue(array_key_exists('@me', $response['entry']));

但它不仅会起作用。有人可以给我一个提示吗?谢谢

编辑:'@me' 可以在数组中的任何位置,而不是在第一个位置,我要求这个在 codecept 中进行测试,所以我需要直接断言

标签: phpjsontestingcodeception

解决方案


您可以遍历结果集以检查每个条目。

function checkEntries($object, $search) {
   $object = json_decode($object, true);
   foreach($object['entry'] as $entry) {
      if ($entry['authorId'] == $search) {
          return true;
      }
   }
   return false;
}

或者你可以使用这个:
PHP multidimensional array search by value


推荐阅读