代码之家  ›  专栏  ›  技术社区  ›  Jesse Orange

从嵌套数组php获取信息

  •  0
  • Jesse Orange  · 技术社区  · 7 年前

    我正在调用API

    我将响应作为关联数组,以便使用:

    $field = $response['nameOfKey'];

    但是,键的一些值本身是数组,如下所示:

    {
      "Title": "Mr",
      "Forenames": "Steve",
      "Surname": "Williams",
      "CountryOfBirth": 1,
      "EmailAddress": "john.doe@email.com",
      "EmailType": "Personal",
      "BirthDate": "\/Date(632880000000)\/",
      "Suffix": null,
      "NationalInsuranceNumber": null,
      "PrimaryAddress": {
        "Address1": "Flat 1",
        "Address2": "Oxford Street",
        "City": "London",
        "County": "London",
        "Postcode": "L12456",
        "Country": 1
      },
      "AdditionalAddresses": [
        {
          "Address1": null,
          "Address2": null,
          "City": null,
          "County": null,
          "Postcode": null,
          "Country": 0,
          "AddressType": 0
        }
      ],
      "PrimaryTelephone": {
        "Number": "123456789",
        "DialingCode": 1,
        "TelephoneType": 1
      },
      "AdditionalTelephone": [
        {
          "Number": "223456789",
          "DialingCode": 2,
          "TelephoneType": 2
        }
      ],
      "BankAccount": {
        "AccountName": "John Doe Account",
        "AccountNumber": "123456789",
        "SortCode": "123456"
      },
      "PrimaryCitizenship": {
        "CountryOfResidency": 1,
        "TaxIdentificationNumber": "AB12CD34EF56"
      },
      "AdditionalCitizenship": [
        {
          "CountryOfResidency": 0,
          "TaxIdentificationNumber": null
        }
      ],
      "ExternalCustomerId": "91",
      "ExternalPlanId": "91",
      "PlanType": 10
    }
    

    所以现在我可以用名字 $forename = $decodedResponse["Forenames"]; 但我对试图从内部数组中获取值感到非常困惑。

    我想我可以这样做:

    foreach($decodedResponse as $data)
            {
                foreach($data['TelephoneNumbers'] as $tel)
                {
                    echo $tel['Number']; die();
                }
    }
    

    本质上,循环原始关联数组,然后循环特定键以获取其值。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jirka Hrazdil    7 年前

    您应该使用 foreach 对于以下阵列项: AdditionalAddresses , AdditionalTelephone AdditionalCitizenship . 否则,只需链阵列键。参见示例:

    $forename = $decodedResponse['Forenames'];
    $address2 = $decodedResponse['PrimaryAddress']['Address2'];
    
    foreach ($decodedResponse['AdditionalTelephone'] as $tel) {
      echo $tel['Number'];
    }
    
    推荐文章