PHP多维数组-使用关键字搜索值

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

我有一个由json_decode()生成的数组。 $array_data=json_decode(json_encode(simplexml_load_string($data)),true)

输出数组如下所示:

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键。因此,该解决方案非常有效!干杯