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

Searching multidimensional JSON array for value using generic keys - php

我正在尝试搜索从 SOAP XML 响应转换为特定值的复杂 JSON 数组。按键真的很通用。

 ["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 循环中定位它来打印值。

编辑:忘记添加如果缺少某些数据,数组中值的位置可能会发生变化。

您可以通过 label 索引该数组,以便在接下来的步骤中将其用于其他值:

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

那么您将拥有 Job InformationHours and salary 键。然后你可以通过 label:

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

最后访问Salary键的value

echo $HoursSalary["Salary"]["value"];