PHP多维数组-使用关键字搜索值
我有一个由json_decode()生成的数组。 $array_data=json_decode(json_encode(simplexml_load_string($data)),true) 输出数组如下所示:PHP多维数组-使用关键字搜索值,php,json,multidimensional-array,Php,Json,Multidimensional Array,我有一个由json_decode()生成的数组。 $array_data=json_decode(json_encode(simplexml_load_string($data)),true) 输出数组如下所示: Array ( [@attributes] => Array ( [version] => 1.0 ) [response] => Array ( [op
Array
(
[@attributes] => Array
(
[version] => 1.0
)
[response] => Array
(
[operation] => Array
(
[@attributes] => Array
(
[name] => ADD_REQUEST
)
[result] => Array
(
[statuscode] => 200
[status] => Success
[message] => Request added successfully
)
[Details] => Array
(
[0] => Array
(
[workorderid] => 291885
)
[1] => Array
(
[parameter] => Array
(
[name] => workorderid
[value] => 291885
)
)
)
)
)
)
我需要将键“workorderid”的值保存在另一个php变量中,以便在代码中进一步使用它。价值是动态的
我现在一直在苦苦挣扎,寻找一些指导。
谁能帮我完成这件事?提前多谢
问候,,
Pooja如果您确定
详细信息
下的第一个数组将包含workordrid
键,您可以直接访问它:
$workorderid = $array_data['response']['operation']['Details'][0]['workorderid'];
var_dump($workorderid);
输出:
字符串(6)“291885”
如果您不知道它将位于
Details
下的哪个数组中,则必须循环查找它:
$workorderid = null;
foreach ($array_data['response']['operation']['Details'] as $detail) {
if (isset($detail['workorderid'])) {
$workorderid = $detail['workorderid'];
break;
}
}
if (null !== $workorderid) {
var_dump($workorderid);
}
输出:
字符串(6)“291885”
如果您只需要从响应中获取1个键,那么这是一个可行的解决方案。如果您需要更多键,我建议将响应数据映射到更可读的结构中。如果您确定
详细信息下的第一个数组将包含workorderid
键,您可以直接访问它:
$workorderid = $array_data['response']['operation']['Details'][0]['workorderid'];
var_dump($workorderid);
输出:
字符串(6)“291885”
如果您不知道它将位于Details
下的哪个数组中,则必须循环查找它:
$workorderid = null;
foreach ($array_data['response']['operation']['Details'] as $detail) {
if (isset($detail['workorderid'])) {
$workorderid = $detail['workorderid'];
break;
}
}
if (null !== $workorderid) {
var_dump($workorderid);
}
输出:
字符串(6)“291885”
如果您只需要从响应中获取1个键,那么这是一个可行的解决方案。如果您需要更多键,我建议将响应数据映射到更可读的结构。为什么不使用SimpleXML本身来获取数据,而不是强制转换到数组?类似于$data->response->operation->Details[0]->workorderid
(未测试)感谢iainn的响应。是的,事实上这也是一种方式。没有按我的。无论如何谢谢你!为什么不直接使用SimpleXML本身来获取数据,而不是强制转换到数组?类似于$data->response->operation->Details[0]->workorderid
(未测试)感谢iainn的响应。是的,事实上这也是一种方式。没有按我的。无论如何谢谢你!谢谢你的一束白兰地!这就是我要找的。是的,我确定,确定Details下的第一个数组将包含workorderid键。因此,该解决方案非常有效!干杯…谢谢你一堆白兰地!这就是我要找的。是的,我确定,确定Details下的第一个数组将包含workorderid键。因此,该解决方案非常有效!干杯