Hướng dẫn loop array of objects php - mảng vòng lặp của các đối tượng php

Tôi rất mới với PHP và tôi cần sự giúp đỡ của bạn! Tôi cần viết phụ trợ cho ứng dụng của mình nhận bài đăng JSON và ghi dữ liệu vào tệp JSON. Và tôi bị mắc kẹt với vòng lặp qua mảng.

$postData = file_get_contents["php://input"];
$request = json_decode[$postData];
var_damp[$request]

Hiển thị mảng:

array[2] {
  [0]=>
  object[stdClass]#1 [8] {
    ["name"]=>
    string[11] "Alex Jordan"
    ["email"]=>
    string[14] ""
    ["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] ""
    ["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"
 }
}

Tôi đang cố gắng lặp qua các đối tượng và gặp lỗi

Object of class stdClass could not be converted to string

Đây là cách tôi đang cố gắng làm điều đó:

    foreach[$request as $i => $i_value] {
        echo $i_value;
    }

Đã hỏi ngày 31 tháng 7 năm 2015 lúc 19:08Jul 31, 2015 at 19:08

1

$i_value là đối tượng. Bởi vì đó là một đối tượng, bạn không thể chỉ lặp lại nó [không giống như trong JavaScript nơi bạn có thể đúc bất kỳ đối tượng nào vào chuỗi].

Bạn có thể lặp lại các thuộc tính cụ thể của đối tượng:

foreach[$request as $i => $i_value] {
    echo $i_value->name;
}

Tất nhiên bạn cũng có thể sử dụng

array[2] {
  [0]=>
  object[stdClass]#1 [8] {
    ["name"]=>
    string[11] "Alex Jordan"
    ["email"]=>
    string[14] ""
    ["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] ""
    ["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"
 }
}
0 một lần nữa để đổ từng đối tượng.
array[2] {
  [0]=>
  object[stdClass]#1 [8] {
    ["name"]=>
    string[11] "Alex Jordan"
    ["email"]=>
    string[14] ""
    ["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] ""
    ["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"
 }
}
1 cũng nên hoạt động.

Các đối tượng chỉ có thể được đúc theo chuỗi giống như bạn nếu chúng thực hiện phương thức ma thuật

array[2] {
  [0]=>
  object[stdClass]#1 [8] {
    ["name"]=>
    string[11] "Alex Jordan"
    ["email"]=>
    string[14] ""
    ["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] ""
    ["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"
 }
}
2, nhưng các đối tượng được tạo bởi
array[2] {
  [0]=>
  object[stdClass]#1 [8] {
    ["name"]=>
    string[11] "Alex Jordan"
    ["email"]=>
    string[14] ""
    ["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] ""
    ["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"
 }
}
3 chỉ là các đối tượng
array[2] {
  [0]=>
  object[stdClass]#1 [8] {
    ["name"]=>
    string[11] "Alex Jordan"
    ["email"]=>
    string[14] ""
    ["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] ""
    ["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"
 }
}
4 đơn giản không thực hiện điều này. Có lẽ bạn không phải là ý định của bạn để làm điều này, nhưng nếu bạn tò mò, bạn có thể nhìn vào json_decode sang lớp tùy chỉnh để xem cách bạn có thể sử dụng một lớp tùy chỉnh thay vì stdclass.

Đã trả lời ngày 31 tháng 7 năm 2015 lúc 19:12Jul 31, 2015 at 19:12

GoleztrolgoleztrolGolezTrol

Huy hiệu vàng 113K1717 gold badges181 silver badges204 bronze badges

Tôi đã có cùng một vấn đề gần đây. Tôi đã sử dụng vòng lặp

array[2] {
  [0]=>
  object[stdClass]#1 [8] {
    ["name"]=>
    string[11] "Alex Jordan"
    ["email"]=>
    string[14] ""
    ["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] ""
    ["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"
 }
}
5 để lặp qua mảng cho tôi lỗi
array[2] {
  [0]=>
  object[stdClass]#1 [8] {
    ["name"]=>
    string[11] "Alex Jordan"
    ["email"]=>
    string[14] ""
    ["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] ""
    ["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"
 }
}
6. Sử dụng
array[2] {
  [0]=>
  object[stdClass]#1 [8] {
    ["name"]=>
    string[11] "Alex Jordan"
    ["email"]=>
    string[14] ""
    ["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] ""
    ["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"
 }
}
7 đã giải quyết lỗi của
array[2] {
  [0]=>
  object[stdClass]#1 [8] {
    ["name"]=>
    string[11] "Alex Jordan"
    ["email"]=>
    string[14] ""
    ["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] ""
    ["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"
 }
}
6. Tôi biết đã quá muộn để trả lời câu hỏi này nhưng đây là cho một người có thể đang tìm kiếm nó trong tương lai

$postData = file_get_contents["php://input"];
$request = json_decode[$postData];
// or you can do $postData = json_decode[file_get_contents["php://input"]];
$arrayOfUsers = $request->data; // I used a key of data while sending the array via fetch API

for[$x = 0; $x < count[$arrayOfUsers]; $x++]
{
    if[isset[$arrayOfUsers[$x]]]
    {
        $name = $arrayOfUsers[$x]->name;
        $email = $arrayOfUsers[$x]->email;
        $phone = $arrayOfUsers[$x]->phone;
        $street = $arrayOfUSers[$x]->street;
        // .... and so on
       // then you can do whatever you want with the data
    } else {
      echo "No Data Found";
    }
}

Đã trả lời ngày 11 tháng 7 năm 2021 lúc 8:27Jul 11, 2021 at 8:27

Bạn cũng có thể sử dụng Array_Map [? Callable $ Gọi lại, mảng $ mảng, mảng ... $ mảng]: mảng

  1. để có được thuộc tính bắt buộc của mỗi đối tượng;
  2. hoặc thậm chí thay đổi dữ liệu của nó.

Mã này bao gồm cả hai trường hợp [sandbox_url]:

Bài Viết Liên Quan

Chủ Đề