使用通用键在多维JSON数组中搜索值-php

问题描述 投票:0回答:1

我正在尝试搜索复杂的JSON数组,该数组是从SOAP XML响应转换为特定值的。密钥确实是通用的。

 ["configurableFields"]=>
  array(1) {
    ["configurableField"]=>
    array(6) {
      [0]=>
      array(3) {
        ["label"]=>
        string(15) "Job Information"
        ["value"]=>
        string(15) "Job Information"
        ["criteria"]=>
        array(1) {
          ["criterion"]=>
          array(3) {
            [0]=>
            array(2) {
              ["label"]=>
              string(19) "SAP Position Number"
              ["value"]=>
              string(3) "TBC"
            }
            [1]=>
            array(2) {
              ["label"]=>
              string(20) "Assignment JD Number"
              ["value"]=>
              string(6) "AG111111"
            }
            [2]=>
            array(2) {
              ["label"]=>
              string(20) "Generic JD Reference"
              ["value"]=>
              string(5) "C11111"
            }
          }
        }
      }
      [1]=>
      array(3) {
        ["label"]=>
        string(16) "Hours and salary"
        ["value"]=>
        string(5) "Hours"
        ["criteria"]=>
        array(1) {
          ["criterion"]=>
          array(3) {
            [0]=>
            array(2) {
              ["label"]=>
              string(14) "hours per week"
              ["value"]=>
              string(2) "37"
            }
            [1]=>
            array(2) {
              ["label"]=>
              string(14) "weeks per year"
              ["value"]=>
              string(2) "52"
            }
            [2]=>
            array(2) {
              ["label"]=>
              string(6) "Salary"
              ["value"]=>
              string(11) "£29,636 pa"
            }
          }
        }
      }
    }
  }

在上面的示例中,如何在数组中搜索标签“ Salary”,然后获取值字符串“£29,636 pa”。

很抱歉,我缺少简单的东西。我没有任何起始代码,因为我只是通过在foreach循环中将其作为目标来打印值。

编辑:如果某些数据丢失,则忘记添加值在数组中的位置可以更改。

php arrays json key key-value
1个回答
0
投票

您可以通过label对该数组进行索引,因此可以在后续步骤中将其用于其他值:

$array = array_column($array["configurableFields"]["configurableField"], null, "label");

然后您将具有Job InformationHours and salary键。然后,您可以通过criterionlabel编制索引:

$HoursSalary = array_column($array["Hours and salary"]["criteria"]["criterion"], null, "label");

最后访问value键的Salary

echo $HoursSalary["Salary"]["value"];
© www.soinside.com 2019 - 2024. All rights reserved.