首页 > 解决方案 > PHP 返回数组值

问题描述

确实需要以下帮助。

因此,我的脚本调用远程服务器上的 API:

    try {
    $api = new ApiClient();
    $api->call('GetNameservers', $postfields);

    return array(
        'success' => true,
        'ns1' => $api->getFromResponse('nameserver1'),
        'ns2' => $api->getFromResponse('nameserver2'),
        'ns3' => $api->getFromResponse('nameserver3'),
        'ns4' => $api->getFromResponse('nameserver4'),
        'ns5' => $api->getFromResponse('nameserver5'),
    );

}

上面的 API 调用正确地返回了必须的内容:

Array
(
[result] => 1000
[resData] => Array
    (
        [domain] => somecooldomain.com
        [status] => Active
        [autorenew] => 0
        [contactid] => 822
        [nameserver1] => ns1.nameserver1.com
        [nameserver2] => ns2.nameserver2.com
        [nameserver3] => ns3.nameserver3.com
        [nameserver4] => ns4.nameserver4.com
        [nameserver5] => 
        [registrationdate] => 2018-06-29
        [expirydate] => 2020-11-03
    )
)

我的问题出现在:

return array(
    'success' => true,

这有效:

'ns1' => $api->getFromResponse('result'),

但这不是我需要的,因为数组是嵌套的。我在这里尝试了很多东西:

'ns1' => $api->getFromResponse('resData.nameserver1'),
'ns1' => $api->getFromResponse(['resData']['nameserver1']),

getFromReponse 如下:

    public function getFromResponse($key)
{
    return isset($this->results[$key]) ? $this->results[$key] : '';
}

标签: phparraysmultidimensional-array

解决方案


API 响应返回一个多维数组,但您的函数public function getFromResponse($key)只有一维的规定。

的返回值$api->getFromResponse('resData')实际上是一个数组,所以这样做是有效的:$api->getFromResponse('resData')['nameserver1']从内部数组中获取项目的值。


推荐阅读