【问题标题】:How to see if json array contains a value? [duplicate]如何查看json数组是否包含值? [复制]
【发布时间】:2020-07-22 08:11:24
【问题描述】:

所以,我是 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 中进行测试,所以我需要直接断言

【问题讨论】:

  • 'authoriId' 是该值的数组键。尝试用 in_array 替换 array_key_exists 来检查值。
  • @Gavin 请不要将解决方案建议为 cmets。 meta.stackexchange.com/a/296481/352329
  • @Andrei 现在此页面已关闭,我只能作为 cmets 提供建议。如果您想要一些可以巧妙地放入 assertTrue() 调用的内容,那么这里有几个选项:3v4l.org/SNlll
  • @Andrei,因为您只收到了不正确的答案,虽然您的问题没有被赞成的答案,但您可以自行删除您的问题(无论如何它可能会被删除)。

标签: php json testing codeception


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2023-03-13
    • 2022-01-18
    • 2012-01-10
    • 2018-04-23
    相关资源
    最近更新 更多