在 PHP 中访问 JSON 多维数组的值

Access Values of JSON Multi Dimensional Array in PHP

我试图同时使用

来解析下面的($var)
$convert = json_encode($var);
$object  = (object)json_decode($convert);
$array   = json_decode($convert, TRUE);

但似乎无法通过 $array->messages->event.

之类的方式访问值(通常会看到 nothing/null)

我一直在交叉引用 https://gist.githubusercontent.com/eurica/6034108/raw/10e7fbce580e515db0f0b74d49c812da4e5ce40b/PagerDutyWebhookToEmail.php 上的一些示例代码。但是,它似乎已过时(v1 有效载荷而不是 v2)。

我的目标是在不同的层次上提取不同的价值来创建自定义电子邮件。文档表明 "messages" 下可能有多个 "message",因此可能需要一个 foreach?

X-REF https://community.pagerduty.com/t/how-do-i-notify-a-distribution-list-or-shared-group-email-address/1519 & https://v2.developer.pagerduty.com/docs/webhooks-v2-overview

{
"messages": [{
  "event": "incident.trigger",
  "log_entries": [
    {
      "id": "R2XGXEI3W0FHMSDXHDIBQGBQ5E",
      "type": "trigger_log_entry",
      "summary": "Triggered through the website",
      "self": "https://api.pagerduty.com/log_entries/R2XGXEI3W0FHMSDXHDIBQGBQ5E",
      "html_url": "https://webdemo.pagerduty.com/incidents/PRORDTY/log_entries/R2XGXEI3W0FHMSDXHDIBQGBQ5E",
      "created_at": "2017-09-26T15:14:36Z",
      "agent": {
        "id": "P553OPV",
        "type": "user_reference",
        "summary": "Laura Haley",
        "self": "https://api.pagerduty.com/users/P553OPV",
        "html_url": "https://webdemo.pagerduty.com/users/P553OPV"
      },
      "channel": {
        "type": "web_trigger",
        "summary": "My new incident",
        "subject": "My new incident",
        "details": "Oh my gosh"
      },
      "service": {
        "id": "PN49J75",
        "type": "service_reference",
        "summary": "Production XDB Cluster",
        "self": "https://api.pagerduty.com/services/PN49J75",
        "html_url": "https://webdemo.pagerduty.com/services/PN49J75"
      },
      "incident": {
        "id": "PRORDTY",
        "type": "incident_reference",
        "summary": "[#33] My new incident",
        "self": "https://api.pagerduty.com/incidents/PRORDTY",
        "html_url": "https://webdemo.pagerduty.com/incidents/PRORDTY"
      },
      "teams": [
        {
          "id": "P4SI59S",
          "type": "team_reference",
          "summary": "Engineering",
          "self": "https://api.pagerduty.com/teams/P4SI59S",
          "html_url": "https://webdemo.pagerduty.com/teams/P4SI59S"
        }
      ],
      "contexts": [],
      "event_details": {
        "description": "My new incident"
      }
    }
  ],
  "webhook": {
    "endpoint_url": "https://requestb.in/18ao6fs1",
    "name": "V2 wabhook",
    "description": null,
    "webhook_object": {
      "id": "PN49J75",
      "type": "service_reference",
      "summary": "Production XDB Cluster",
      "self": "https://api.pagerduty.com/services/PN49J75",
      "html_url": "https://webdemo.pagerduty.com/services/PN49J75"
    },
    "config": {},
    "outbound_integration": {
      "id": "PJFWPEP",
      "type": "outbound_integration_reference",
      "summary": "Generic V2 Webhook",
      "self": "https://api.pagerduty.com/outbound_integrations/PJFWPEP",
      "html_url": null
    },
    "accounts_addon": null,
    "id": "PKT9NNX",
    "type": "webhook",
    "summary": "V2 wabhook",
    "self": "https://api.pagerduty.com/webhooks/PKT9NNX",
    "html_url": null
  },
  "incident": {
    "incident_number": 33,
    "title": "My new incident",
    "description": "My new incident",
    "created_at": "2017-09-26T15:14:36Z",
    "status": "triggered",
    "pending_actions": [
      {
        "type": "escalate",
        "at": "2017-09-26T15:44:36Z"
      },
      {
        "type": "resolve",
        "at": "2017-09-26T19:14:36Z"
      }
    ],
    "incident_key": "56a1c5594fe340408230783eebf43be6",
    "service": {
      "id": "PN49J75",
      "name": "Production XDB Cluster",
      "description": "This service was created during onboarding on July 5, 2017.",
      "auto_resolve_timeout": 14400,
      "acknowledgement_timeout": 1800,
      "created_at": "2017-07-05T17:33:09Z",
      "status": "critical",
      "last_incident_timestamp": "2017-09-26T15:14:36Z",
      "teams": [
        {
          "id": "P4SI59S",
          "type": "team_reference",
          "summary": "Engineering",
          "self": "https://api.pagerduty.com/teams/P4SI59S",
          "html_url": "https://webdemo.pagerduty.com/teams/P4SI59S"
        }
      ],
      "incident_urgency_rule": {
        "type": "constant",
        "urgency": "high"
      },
      "scheduled_actions": [],
      "support_hours": null,
      "escalation_policy": {
        "id": "PINYWEF",
        "type": "escalation_policy_reference",
        "summary": "Default",
        "self": "https://api.pagerduty.com/escalation_policies/PINYWEF",
        "html_url": "https://webdemo.pagerduty.com/escalation_policies/PINYWEF"
      },
      "addons": [],
      "privilege": null,
      "alert_creation": "create_alerts_and_incidents",
      "integrations": [
        {
          "id": "PUAYF96",
          "type": "generic_events_api_inbound_integration_reference",
          "summary": "API",
          "self": "https://api.pagerduty.com/services/PN49J75/integrations/PUAYF96",
          "html_url": "https://webdemo.pagerduty.com/services/PN49J75/integrations/PUAYF96"
        },
        {
          "id": "P90GZUH",
          "type": "generic_email_inbound_integration_reference",
          "summary": "Email",
          "self": "https://api.pagerduty.com/services/PN49J75/integrations/P90GZUH",
          "html_url": "https://webdemo.pagerduty.com/services/PN49J75/integrations/P90GZUH"
        }
      ],
      "metadata": {},
      "type": "service",
      "summary": "Production XDB Cluster",
      "self": "https://api.pagerduty.com/services/PN49J75",
      "html_url": "https://webdemo.pagerduty.com/services/PN49J75"
    },
    "assignments": [
      {
        "at": "2017-09-26T15:14:36Z",
        "assignee": {
          "id": "P553OPV",
          "type": "user_reference",
          "summary": "Laura Haley",
          "self": "https://api.pagerduty.com/users/P553OPV",
          "html_url": "https://webdemo.pagerduty.com/users/P553OPV"
        }
      }
    ],
    "acknowledgements": [],
    "last_status_change_at": "2017-09-26T15:14:36Z",
    "last_status_change_by": {
      "id": "PN49J75",
      "type": "service_reference",
      "summary": "Production XDB Cluster",
      "self": "https://api.pagerduty.com/services/PN49J75",
      "html_url": "https://webdemo.pagerduty.com/services/PN49J75"
    },
    "first_trigger_log_entry": {
      "id": "R2XGXEI3W0FHMSDXHDIBQGBQ5E",
      "type": "trigger_log_entry_reference",
      "summary": "Triggered through the website",
      "self": "https://api.pagerduty.com/log_entries/R2XGXEI3W0FHMSDXHDIBQGBQ5E",
      "html_url": "https://webdemo.pagerduty.com/incidents/PRORDTY/log_entries/R2XGXEI3W0FHMSDXHDIBQGBQ5E"
    },
    "escalation_policy": {
      "id": "PINYWEF",
      "type": "escalation_policy_reference",
      "summary": "Default",
      "self": "https://api.pagerduty.com/escalation_policies/PINYWEF",
      "html_url": "https://webdemo.pagerduty.com/escalation_policies/PINYWEF"
    },
    "privilege": null,
    "teams": [
      {
        "id": "P4SI59S",
        "type": "team_reference",
        "summary": "Engineering",
        "self": "https://api.pagerduty.com/teams/P4SI59S",
        "html_url": "https://webdemo.pagerduty.com/teams/P4SI59S"
      }
    ],
    "alert_counts": {
      "all": 0,
      "triggered": 0,
      "resolved": 0
    },
    "impacted_services": [
      {
        "id": "PN49J75",
        "type": "service_reference",
        "summary": "Production XDB Cluster",
        "self": "https://api.pagerduty.com/services/PN49J75",
        "html_url": "https://webdemo.pagerduty.com/services/PN49J75"
      }
    ],
    "is_mergeable": true,
    "basic_alert_grouping": null,
    "alert_grouping": null,
    "metadata": {},
    "external_references": [],
    "importance": null,
    "incidents_responders": [],
    "responder_requests": [],
    "subscriber_requests": [],
    "urgency": "high",
    "id": "PRORDTY",
    "type": "incident",
    "summary": "[#33] My new incident",
    "self": "https://api.pagerduty.com/incidents/PRORDTY",
    "html_url": "https://webdemo.pagerduty.com/incidents/PRORDTY"
  },
  "id": "69a7ced0-a2cd-11e7-a799-22000a15839c",
  "created_on": "2017-09-26T15:14:36Z"
}
]}

答案测试:

echo $object->messages[0]->event;
Notice: Undefined property: stdClass::$messages in 
/var/www/pagerduty/public_html/wh/index.php on line 251

echo $array->messages[0]->event;
Notice: Trying to get property of non-object in 
/var/www/pagerduty/public_html/wh/index.php on line 255

echo $array['messages'][0]['event']
Warning: Illegal string offset 'messages' in 
/var/www/pagerduty/public_html/wh/index.php on line 258
Warning: Illegal string offset 'event' in 
/var/www/pagerduty/public_html/wh/index.php on line 258
{

print_r($array);
{ "messages": [ { "event": "incident.trigger", "log_entries": [ { "id": "R2XGXEI3W0FHMSDXHDIBQGBQ5E", "type": "trigger_log_entry", "summary": "Triggered through the website", "self": "https://api.pagerduty.com/log_entries/R2XGXEI3W0FHMSDXHDIBQGBQ5E", "html_url": "https://webdemo.pagerduty.com/incidents/PRORDTY/log_entries/R2XGXEI3W0FHMSDXHDIBQGBQ5E", "created_at": "2017-09-26T15:14:36Z", "agent": { "id": "P553OPV", "type": "user_reference", "summary": "Laura Haley", "self": "https://api.pagerduty.com/users/P553OPV", "html_url": "https://webdemo.pagerduty.com/users/P553OPV" }, "channel": { "type": "web_trigger", "summary": "My new incident", "subject": "My new incident", "details": "Oh my gosh" }, "service": { "id": "PN49J75", "type": "service_reference", "summary": "Production XDB Cluster", "self": "https://api.pagerduty.com/services/PN49J75", "html_url": "https://webdemo.pagerduty.com/services/PN49J75" }, "incident": { "id": "PRORDTY", "type": "incident_reference", "summary": "[#33] My new incident", "self": "https://api.pagerduty.com/incidents/PRORDTY", "html_url": "https://webdemo.pagerduty.com/incidents/PRORDTY" }, "teams": [ { "id": "P4SI59S", "type": "team_reference", "summary": "Engineering", "self": "https://api.pagerduty.com/teams/P4SI59S", "html_url": "https://webdemo.pagerduty.com/teams/P4SI59S" } ], "contexts": [], "event_details": { "description": "My new incident" } } ], "webhook": { "endpoint_url": "https://requestb.in/18ao6fs1", "name": "V2 wabhook", "description": null, "webhook_object": { "id": "PN49J75", "type": "service_reference", "summary": "Production XDB Cluster", "self": "https://api.pagerduty.com/services/PN49J75", "html_url": "https://webdemo.pagerduty.com/services/PN49J75" }, "config": {}, "outbound_integration": { "id": "PJFWPEP", "type": "outbound_integration_reference", "summary": "Generic V2 Webhook", "self": "https://api.pagerduty.com/outbound_integrations/PJFWPEP", "html_url": null }, "accounts_addon": null, "id": "PKT9NNX", "type": "webhook", "summary": "V2 wabhook", "self": "https://api.pagerduty.com/webhooks/PKT9NNX", "html_url": null }, "incident": { "incident_number": 33, "title": "My new incident", "description": "My new incident", "created_at": "2017-09-26T15:14:36Z", "status": "triggered", "pending_actions": [ { "type": "escalate", "at": "2017-09-26T15:44:36Z" }, { "type": "resolve", "at": "2017-09-26T19:14:36Z" } ], "incident_key": "56a1c5594fe340408230783eebf43be6", "service": { "id": "PN49J75", "name": "Production XDB Cluster", "description": "This service was created during onboarding on July 5, 2017.", "auto_resolve_timeout": 14400, "acknowledgement_timeout": 1800, "created_at": "2017-07-05T17:33:09Z", "status": "critical", "last_incident_timestamp": "2017-09-26T15:14:36Z", "teams": [ { "id": "P4SI59S", "type": "team_reference", "summary": "Engineering", "self": "https://api.pagerduty.com/teams/P4SI59S", "html_url": "https://webdemo.pagerduty.com/teams/P4SI59S" } ], "incident_urgency_rule": { "type": "constant", "urgency": "high" }, "scheduled_actions": [], "support_hours": null, "escalation_policy": { "id": "PINYWEF", "type": "escalation_policy_reference", "summary": "Default", "self": "https://api.pagerduty.com/escalation_policies/PINYWEF", "html_url": "https://webdemo.pagerduty.com/escalation_policies/PINYWEF" }, "addons": [], "privilege": null, "alert_creation": "create_alerts_and_incidents", "integrations": [ { "id": "PUAYF96", "type": "generic_events_api_inbound_integration_reference", "summary": "API", "self": "https://api.pagerduty.com/services/PN49J75/integrations/PUAYF96", "html_url": "https://webdemo.pagerduty.com/services/PN49J75/integrations/PUAYF96" }, { "id": "P90GZUH", "type": "generic_email_inbound_integration_reference", "summary": "Email", "self": "https://api.pagerduty.com/services/PN49J75/integrations/P90GZUH", "html_url": "https://webdemo.pagerduty.com/services/PN49J75/integrations/P90GZUH" } ], "metadata": {}, "type": "service", "summary": "Production XDB Cluster", "self": "https://api.pagerduty.com/services/PN49J75", "html_url": "https://webdemo.pagerduty.com/services/PN49J75" }, "assignments": [ { "at": "2017-09-26T15:14:36Z", "assignee": { "id": "P553OPV", "type": "user_reference", "summary": "Laura Haley", "self": "https://api.pagerduty.com/users/P553OPV", "html_url": "https://webdemo.pagerduty.com/users/P553OPV" } } ], "acknowledgements": [], "last_status_change_at": "2017-09-26T15:14:36Z", "last_status_change_by": { "id": "PN49J75", "type": "service_reference", "summary": "Production XDB Cluster", "self": "https://api.pagerduty.com/services/PN49J75", "html_url": "https://webdemo.pagerduty.com/services/PN49J75" }, "first_trigger_log_entry": { "id": "R2XGXEI3W0FHMSDXHDIBQGBQ5E", "type": "trigger_log_entry_reference", "summary": "Triggered through the website", "self": "https://api.pagerduty.com/log_entries/R2XGXEI3W0FHMSDXHDIBQGBQ5E", "html_url": "https://webdemo.pagerduty.com/incidents/PRORDTY/log_entries/R2XGXEI3W0FHMSDXHDIBQGBQ5E" }, "escalation_policy": { "id": "PINYWEF", "type": "escalation_policy_reference", "summary": "Default", "self": "https://api.pagerduty.com/escalation_policies/PINYWEF", "html_url": "https://webdemo.pagerduty.com/escalation_policies/PINYWEF" }, "privilege": null, "teams": [ { "id": "P4SI59S", "type": "team_reference", "summary": "Engineering", "self": "https://api.pagerduty.com/teams/P4SI59S", "html_url": "https://webdemo.pagerduty.com/teams/P4SI59S" } ], "alert_counts": { "all": 0, "triggered": 0, "resolved": 0 }, "impacted_services": [ { "id": "PN49J75", "type": "service_reference", "summary": "Production XDB Cluster", "self": "https://api.pagerduty.com/services/PN49J75", "html_url": "https://webdemo.pagerduty.com/services/PN49J75" } ], "is_mergeable": true, "basic_alert_grouping": null, "alert_grouping": null, "metadata": {}, "external_references": [], "importance": null, "incidents_responders": [], "responder_requests": [], "subscriber_requests": [], "urgency": "high", "id": "PRORDTY", "type": "incident", "summary": "[#33] My new incident", "self": "https://api.pagerduty.com/incidents/PRORDTY", "html_url": "https://webdemo.pagerduty.com/incidents/PRORDTY" }, "id": "69a7ced0-a2cd-11e7-a799-22000a15839c", "created_on": "2017-09-26T15:14:36Z" } ] }

but appear to be unable to access values (typically seeing nothing/null), through something like $array->messages->event.

您无法访问 $array(您通过 json_decode($convert, true) 收到的那样。

尝试像 $array['messages'][0]['event']

一样访问它们