使用通用键在多维 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 Information
和 Hours and salary
键。然后你可以通过 label
:
索引 criterion
$HoursSalary = array_column($array["Hours and salary"]["criteria"]["criterion"], null, "label");
最后访问Salary
键的value
:
echo $HoursSalary["Salary"]["value"];
我正在尝试搜索从 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 Information
和 Hours and salary
键。然后你可以通过 label
:
criterion
$HoursSalary = array_column($array["Hours and salary"]["criteria"]["criterion"], null, "label");
最后访问Salary
键的value
:
echo $HoursSalary["Salary"]["value"];