从多个数组中提取值

时间:2016-06-16 15:39:04

标签: php arrays loops echosign

我目前正在使用Adobe Echosign API格式化表格中的某些数据。输出如下:

{
  "agreementId": "",
  "events": [
    {
      "actingUserEmail": "",
      "actingUserIpAddress": "",
      "date": "date",
      "description": "",
      "participantEmail": "",
      "type": "",
      "versionId": ""
    }
  ],
  "locale": "",
  "modifiable": false,
  "name": "",
  "nextParticipantSetInfos": [
    {
      "nextParticipantSetMemberInfos": [
        {
          "email": "",
          "waitingSince": "date"
        }
      ]
    }
  ],
  "participantSetInfos": [
    {
      "participantSetId": "",
      "participantSetMemberInfos": [
        {
          "email": "",
          "participantId": ""
        }
      ],
      "roles": [
        ""
      ],
      "status": ""
    }
  ],
  "status": "",
  "vaultingEnabled": false
}

我循环执行多个协议,并将它们作为单独的数组输出。

这可能是一个非常基本的问题,但我如何通过每个数组并提取说出' participantEmail',' name'和'状态'值?

谢谢!

2 个答案:

答案 0 :(得分:0)

根据您使用的编程语言,有很多方法可以解决这个问题。在JS中,您可以将此JSON数组转换为JS Array of Objects,之后您可以使用JS处理来访问它们。

JS的例子是:

var input = 'yourJSONstring';
var jsObject = JSON.parse(input);
for(var foo in jsObject){
	var name = foo.name;
    var participantEmail=  foo.events[0].participantEmail;
    var status = foo.participantEmail[0].status;
}

答案 1 :(得分:0)

假设您拥有一系列与您提供的格式的协议,您可以执行以下操作:

<?php

$json = '[{
  "agreementId": "",
  "events": [
    {
      "actingUserEmail": "",
      "actingUserIpAddress": "",
      "date": "date",
      "description": "",
      "participantEmail": "an email",
      "type": "",
      "versionId": ""
    }
  ],
  "locale": "",
  "modifiable": false,
  "name": "a name",
  "nextParticipantSetInfos": [
    {
      "nextParticipantSetMemberInfos": [
        {
          "email": "",
          "waitingSince": "date"
        }
      ]
    }
  ],
  "participantSetInfos": [
    {
      "participantSetId": "",
      "participantSetMemberInfos": [
        {
          "email": "",
          "participantId": ""
        }
      ],
      "roles": [
        ""
      ],
      "status": "a status"
    }
  ],
  "status": "",
  "vaultingEnabled": false
}]';

$parsed = json_decode($json, true);

$names = [];
foreach($parsed as $agreement) {

    $names[] = $agreement['name'];

    $emails = []; 
    foreach($agreement['events'] as $event) {
        $emails[] = $event['participantEmail'];
    }

    $status = []; 
    foreach($agreement['participantSetInfos'] as $participant) {
        $status[] = $participant['status'];
    }

}

var_dump($names);
var_dump($emails);
var_dump($status);

当然你应该对空值进行一些检查,所以,只是为了给你一个想法。 由于您没有说明名称,状态和电子邮件之间的关系,我只是将它们放在单独的数组中,但是没有什么能够通过某些数组处理来修复。

希望这有帮助!