Php 遍历多维对象/数组

Php 遍历多维对象/数组,php,arrays,object,soap,iteration,Php,Arrays,Object,Soap,Iteration,我有一些来自soap api的数据。此数据采用以下格式: array(2) { ["Request"]=> object(stdClass)#7 (3) { ["AccessKey"]=> string(3) "dub" ["Timestamp"]=> string(19) "2019.07.04 09:06:19" ["Conditions"]=> object(stdClass)#8 (1) { ["

我有一些来自soap api的数据。此数据采用以下格式:

array(2) {
  ["Request"]=>
  object(stdClass)#7 (3) {
    ["AccessKey"]=>
    string(3) "dub"
    ["Timestamp"]=>
    string(19) "2019.07.04 09:06:19"
    ["Conditions"]=>
    object(stdClass)#8 (1) {
      ["Condition"]=>
      object(stdClass)#9 (2) {
        ["Field"]=>
        string(11) "From"
        ["Value"]=>
        string(10) "1562223979"
      }
    }
  }
  ["Products"]=>
  object(stdClass)#10 (1) {
    ["Product"]=>
    array(10) {
      [0]=>
      object(stdClass)#11 (11) {
        ["Ean"]=>
        string(13) "4029759107323"
        ["Type"]=>
        string(9) "DVD"
        ["Title"]=>
        string(58) "Hellraisers"
        ["FSK"]=>
        string(36) "Freigegeben ohne Altersbeschränkung"
        ["Genre"]=>
        string(5) "Sport"
        ["Year"]=>
        string(4) "2015"
        ["Length"]=>
        string(3) "275"
        ["Language"]=>
        string(7) "Deutsch"
        ["Items"]=>
        string(1) "2"
        ["Release"]=>
        string(10) "2049-12-31"
        ["Label"]=>
        string(17) "Edel Germany GmbH"
      }
我想循环浏览这些数据,并获得每一组的标题

我尝试了foreach循环,但收到了一些错误消息

foreach ($results as $result) {
    echo "Titel " . $result->Titel;
}


什么都不管用。我不能把我的脑袋放在数组上…

当你不了解某件事时,有时最好尽量把它缩小,然后从那里开始增长,开始尝试打印整个响应,然后是属性产品,然后是产品,然后是产品数组:

如何访问
$response
首先,您有一个对象
$response
中包含对象的元素,
[“Products”]
是我们想要的对象,因此
$response->Products
中有一个对象,有一个名为
[“Products”]
的属性,包含所有产品的对象数组,因此,
$response>产品->产品
。由于
$response->Products->Product
是一个数组,我们需要对其进行迭代,您可以这样迭代:

foreach($response->Products->Product as $product){
 echo $product->Title; // prints the title of every product
}
如果您不理解或它不起作用,请毫不犹豫地询问,但通过您粘贴的代码,我认为
foreach
是正确的

JSON格式建议
顺便说一句,JSON不是“清晰”和“正确”的,产品数组应该在上面一级。在“产品”内部,而不是在“产品”内部。

当您没有掌握某个内容时,有时最好尝试将其缩小并从中成长,开始尝试打印整个响应,然后打印属性产品,然后打印产品,然后打印产品阵列:

如何访问
$response
首先,您有一个对象
$response
中包含对象的元素,
[“Products”]
是我们想要的对象,因此
$response->Products
中有一个对象,有一个名为
[“Products”]
的属性,包含所有产品的对象数组,因此,
$response>产品->产品
。由于
$response->Products->Product
是一个数组,我们需要对其进行迭代,您可以这样迭代:

foreach($response->Products->Product as $product){
 echo $product->Title; // prints the title of every product
}
如果您不理解或它不起作用,请毫不犹豫地询问,但通过您粘贴的代码,我认为
foreach
是正确的

JSON格式建议

顺便说一句,JSON不是“清晰”和“正确”的,产品数组应该在上面一级。在“产品”内部,而不是在“产品”内部。

Titel
您的意思是
Title
?正如您希望该示例的输出将是“Hellraisers”?因为数据看起来好像在另一个元素下-请在您最后的努力中尝试
foreach($results['Products']As$result){
。(以及正确的拼写)。结果数组中的两个对象似乎非常不同。我不认为循环是获得这些结果的最佳方式。感谢您的快速响应!@Nigel当我尝试此操作时,我得到了致命错误:未捕获错误:无法在/opt/lampp/htdocs/api_test/index中使用stdClass类型的对象作为数组。php:39堆栈跟踪:#0{main}在线抛出/opt/lampp/htdocs/api_test/index.php39@Dirk还有什么其他方法可以尝试?通过
Titel
您的意思是
Title
?因为您希望该示例的输出将是“Hellraisers”?因为数据看起来好像在另一个元素下-在您最后的努力中尝试
foreach($results['Products']As$result){
。(连同正确的拼写)。结果数组中的两个对象似乎非常不同。我不认为循环是获得这些结果的最佳方式。感谢您的快速响应!@Nigel当我尝试此操作时,我得到了致命错误:未捕获错误:无法在/opt/lampp/htdocs/api_test/index中使用stdClass类型的对象作为数组。php:39堆栈跟踪:#0{main}在线抛出/opt/lampp/htdocs/api_test/index.php39@Dirk我还可以尝试其他方法吗?嘿,Josep!非常感谢您对流程的良好解释。这有助于我更好地理解它。当我尝试您的方法时,我收到以下错误消息:致命错误:未捕获错误:无法在/opt/lampp/htdocs中将stdClass类型的对象用作数组/api#u test/index.php:39堆栈跟踪:#0{main}在第39行的/opt/lampp/htdocs/api#u test/index.php中抛出,如果将产品作为对象进行尝试($response->Products['Product']我得到的消息和我从api得到的数据一样,我不是自己写的。这是我从api得到的JSONit@youwhatmate尝试
echo$product->Title
,而不是echo$product['Title'];。如果它不起作用,请使用下一个代码
foreach($response['Products]->productas$product){echo$product->Title;//打印每个产品的标题}
Ok经过一些尝试和错误后,我得到了我的结果:-)foreach($response->Products->product as$product){echo$product->Title。“
”;}@youwhatmate因为你没有把整个代码都放进去,我不知道主数组也是一个对象,我会编辑代码,马上标记为,谢谢!抱歉!我把你的答案标记为正确的答案!谢谢!嘿,Josep!非常感谢你对过程的好解释。这有助于我更好地理解它。当我尝试你的方法时ch,我得到了这个错误消息:致命错误:未捕获错误:无法在/opt/lampp/htdocs/api_test/index.php中使用stdClass类型的对象作为数组。php:39堆栈跟踪:#0{main}在第39行/opt/lampp/htdocs/api_test/index.php中抛出,如果将产品作为对象进行尝试($response->Products['Product']我得到的消息和我从api得到的数据一样,我不是自己写的。这是我从api得到的JSONit@youwhatmate尝试
echo$product->Title
,而不是echo$product['Title'];。如果它不起作用,请使用下一个代码
foreach($response['Products]->productas$product){echo$product->Title;//打印每个产品的标题}
经过一些尝试和错误后,我得到了我的结果:-)foreach($response->Products->product as$product){echo$product->Title。“
”;}@youwhatmate as you di