【问题标题】:How can I return array nested in multiple objects?如何返回嵌套在多个对象中的数组?
【发布时间】:2021-03-16 12:13:44
【问题描述】:

在 PHP 中,我试图列出嵌套在 3 个对象(返回、用户、关联设备)下的特定数组(设备)。我的代码如下link。下面是代码:

$payload = array(
    "userid"=>$_POST["iduser"],
    "returnedTags"=>array(
        "device"=>"",
    )
);

$response = $client->getUser($payload);

var_dump 输出以下内容:

    object(stdClass)#2 (1) { 
        ["return"]=> object(stdClass)#3 (1) { 
            ["user"]=> object(stdClass)#4 (1) { 
                ["uuid"]=> string(38) "{ECBF3CAC-672B-B205-D14F-DAB3A3805F60}" 
            } 
        } 
    }

当我不过滤输出时,我可以看到所有信息并获取设备数组。

    object(stdClass)#2 (1) { 
        ["return"]=> object(stdClass)#3 (1) { 
            ["user"]=> object(stdClass)#4 (59) { 
                ["firstName"]=> string(5) "fname" 
                ["displayName"]=> string(5) "dname" 
                ["middleName"]=> string(0) "" 
                ["lastName"]=> string(5) "lname" 
                ["userid"]=> string(7) "user_id" 
                ["password"]=> string(0) "" 
                ["pin"]=> string(0) "" 
                ["mailid"]=> string(0) "" 
                ["department"]=> string(20) "IT Operations (AMER)" 
                ["manager"]=> string(0) "" 
                ["userLocale"]=> string(0) "" 
                ["associatedDevices"]=> object(stdClass)#5 (1) { 
                    **["device"]=> array(2) { 
                        [0]=> string(15) "SEP3863BBB68D5D" 
                        [1]=> string(15) "SEP5065F3B9AB95"** 
                        } 
                }
    

我假设有一种方法可以调用该特定数组,但我没有看到它。任何帮助表示赞赏。谢谢。

【问题讨论】:

  • 为什么要检索密钥? device 一个?
  • 我试图只返回“设备”字符串。
  • 深度层数是动态的还是静态的?
  • 数组的路径是静态的,但是设备数组中的条目数可以变化。
  • 试试这个:$payload = array("userid"=>$_POST["iduser"],"returnedTags"=>array("associatedDevices","device"));$response = $client->getUser($payload); 然后检查您在associatedDevicesdevice 部分中获取的数据。删除没有给您响应的另一个并保留给您所需结果的那个

标签: php arrays object


【解决方案1】:

假设$obj 是您的stdClass 对象,您将访问device 数组,如下所示,您可以从其父对象的属性访问每个对象。

$devices = $obj->return->user->associatedDevices->device;
print_r($devices);

要从初始有效负载数组中获取数据,您需要访问其中的returnedTags,然后访问其中的device,如下所示,

$devices = $payload['returnedTags']['device'];

【讨论】:

  • 谢谢你,但我仍然不明白这适合“returnedTags”键的位置。能详细点吗?
  • @Chad 您的整个数据集合中的返回标签在哪里?
  • $payload = array("userid"=>$_POST["iduser"], "returnedTags"=>array("device"=>"", )); $response = $client->getUser($payload);
  • 抱歉,但我仍然无法正常工作。我到底在哪里定义 $devices?在payload数组里面?
  • @Chad 没有。它是其作用域的全局变量。
猜你喜欢
  • 2021-10-20
  • 2020-07-03
  • 2017-04-11
  • 2017-04-03
  • 1970-01-01
  • 2021-12-26
  • 2019-09-29
  • 1970-01-01
  • 2016-01-13
相关资源
最近更新 更多