如何在PHP中循环遍历对象数组

时间:2015-07-31 19:08:10

标签: php arrays stdclass

我是PHP的新手,我需要你的帮助! 我需要为我的应用程序写后端,接收json post并将数据写入json文件。而且我一直在通过数组循环。

$postData = file_get_contents("php://input");
$request = json_decode($postData);
var_damp($request)

显示数组:

array(2) {
  [0]=>
  object(stdClass)#1 (8) {
    ["name"]=>
    string(11) "Alex Jordan"
    ["email"]=>
    string(14) "alex@gmail.com"
    ["phone"]=>
    int(123456789)
    ["street"]=>
    string(12) "street, str."
    ["city"]=>
    string(7) "Chicago"
    ["state"]=>
    string(7) "Chicago"
    ["zip"]=>
    string(5) "07202"
    ["$$hashKey"]=>
    string(8) "object:3"
  }
  [1]=>
  object(stdClass)#2 (8) {
    ["name"]=>
    string(15) "Michael Jonhson"
    ["email"]=>
    string(17) "michael@gmail.com"
    ["phone"]=>
    float(11987654321)
    ["street"]=>
    string(12) "street, str."
    ["city"]=>
    string(11) "Los Angeles"
   ["state"]=>
   string(10) "California"
   ["zip"]=>
   string(5) "27222"
   ["$$hashKey"]=>
   string(8) "object:4"
 }
}

我正在尝试遍历对象并获取错误

Object of class stdClass could not be converted to string

以下是我尝试这样做的方法:

    foreach($request as $i => $i_value) {
        echo $i_value;
    }

2 个答案:

答案 0 :(得分:4)

$i_value 对象。因为它是一个对象,你不能只回显它(不像你可以将任何对象转换为字符串的JavaScript)。

您可以回显对象的特定属性:

foreach($request as $i => $i_value) {
    echo $i_value->name;
}

当然,您也可以再次使用var_dump转储每个对象。 print_r也应该有用。

对象只能像实现__toString() magic method一样转换为字符串,但json_decode创建的对象只是简单的StdClass对象,不实现此目的。根本不打算这样做,但是如果你很好奇,你可以看看json_decode to custom class,看看如何使用自定义类而不是StdClass。

答案 1 :(得分:0)

我最近遇到了同样的问题。我使用 rightSide 循环遍历数组,这给了我 for 的错误。使用 undefined offset 解决了 isset() 的错误。我知道现在回答这个问题为时已晚,但这里是为将来可能会寻找它的人准备的

undefined offset