Hãy hiểu với mã ví dụ sau
Tạo đối tượng stdClass đa chiều cho mục đích trình diễn
$student1 = new stdClass[]; $student1->name = "John"; $student1->id = 123; $student2 = new stdClass[]; $student2->name = "Peter"; $student2->id = 321; $students = array[ "math" => $student1, "science" => $student2 ]; $objects = [object] $students; $mixedArray = array[ "user" => array[ array[ 'name' => 'Henry', 'age' => '24' ] ], "students" => $objects ]; $mixedObjects = [object] $mixedArray;
Mã trên sẽ tạo đối tượng stdClass là
stdClass Object [ [user] => Array [ [0] => Array [ [name] => Henry [age] => 24 ] ] [students] => stdClass Object [ [math] => stdClass Object [ [name] => John [id] => 123 ] [science] => stdClass Object [ [name] => Peter [id] => 321 ] ] ]
Lặp qua đối tượng stdClass $mixedObjects->students và hiển thị các giá trị như bên dưới
foreach [$mixedObjects->students as $obj => $student] { echo "Department : " . $obj . " => Name: " . $student->name . " | id:" . $student->id; echo "
"; }
đầu ra
Department : math => Name: John | id:123 Department : science => Name: Peter | id:321
Tôi cần một số trợ giúp về mã của mình vì tôi gặp khó khăn trong việc tìm nạp giá trị từ stdclass. Tôi đang sử dụng dữ liệu json để chuyển đổi nó sang PHP, vì vậy tôi muốn tìm nạp dữ liệu "xuất hiện" từ đối tượng stdclass
Khi tôi thử cái này
echo $data->appears;
tôi nhận được cái này
Lưu ý. Đang cố lấy thuộc tính của non-object trong /home/username/public_html/foldername/script. php trên dòng 22
Tôi cũng đã thử cái này
echo $data[0]->appears->value;
Và điều này
echo $data->appears[0]->value;
Tôi vẫn gặp lỗi tương tự nên tôi không biết phải làm gì để giải quyết
Mã đầy đủ
Đối tượng STDClass
________số 8
Var_dump
array[1] { ["data"]=> array[1] { ["185.220.101.46"]=> array[15] { ["domains_count"]=> int[0] ["domains_list"]=> NULL ["updated"]=> string[19] "2019-12-02 22:04:25" ["spam_rate"]=> int[1] ["frequency"]=> int[6827] ["frequency_time_24h"]=> int[106] ["frequency_time_1h"]=> int[2] ["network_type"]=> string[7] "hosting" ["in_antispam"]=> int[1] ["in_security"]=> int[0] ["appears"]=> int[1] ["country"]=> string[2] "DE" ["submitted"]=> string[19] "2018-01-11 20:34:37" ["frequency_time_10m"]=> int[2] ["sha256"]=> string[64] "e39d4a9be2f210d1a75ba2b5ece08a4b35e99002b03aeb6ceaad1d98de87c248" } } }
Bạn có thể vui lòng chỉ cho tôi một ví dụ về cách tôi có thể tìm nạp `xuất hiện` từ đối tượng stdclass không?
bât cư lơi khuyên nao cung se được đanh gia cao
Đã chỉnh sửa ngày 2 tháng 12 năm 2019 bởi mark107- Trích dẫn
Liên kết để bình luậnChia sẻ trên các trang web khác
Barand
Đăng ngày 2 tháng 12 năm 2019
Barand
- người điều hành
- 23. 4k
- 351
- Địa điểm. Cheshire, Vương quốc Anh
- Lứa tuổi. 73
- quyên góp cho tôi
- Chia sẻ
Đăng ngày 2 tháng 12 năm 2019
stdClass Object [ [user] => Array [ [0] => Array [ [name] => Henry [age] => 24 ] ] [students] => stdClass Object [ [math] => stdClass Object [ [name] => John [id] => 123 ] [science] => stdClass Object [ [name] => Peter [id] => 321 ] ] ]0
Điều đó chuyển đổi nó thành một mảng. Để chuyển đổi nó thành một đối tượng, hãy xóa "true"
stdClass Object [ [user] => Array [ [0] => Array [ [name] => Henry [age] => 24 ] ] [students] => stdClass Object [ [math] => stdClass Object [ [name] => John [id] => 123 ] [science] => stdClass Object [ [name] => Peter [id] => 321 ] ] ]1
- Trích dẫn
Liên kết để bình luậnChia sẻ trên các trang web khác
requinix
Đăng ngày 2 tháng 12 năm 2019
requinix
- quản trị viên
- 14. 4k
- 296
- Địa điểm. Mỹ/Los_Angeles
- Chia sẻ
Đăng ngày 2 tháng 12 năm 2019
Bạn đang cách xa
Đối với một, nó không phải là một đối tượng. Trên thực tế, bạn đã nói rõ ràng với PHP rằng bạn không muốn một đối tượng. Vì vậy, nó đã cho bạn một mảng. Nếu bạn muốn một đối tượng thì hãy làm những gì Barand nói
Thứ hai, bạn dường như không biết dữ liệu được cấu trúc như thế nào. Có thể thứ gì đó sẽ nhấp vào nếu bạn nhìn vào đầu ra print_r thụt vào?
stdClass Object [ [user] => Array [ [0] => Array [ [name] => Henry [age] => 24 ] ] [students] => stdClass Object [ [math] => stdClass Object [ [name] => John [id] => 123 ] [science] => stdClass Object [ [name] => Peter [id] => 321 ] ] ]2
- Trích dẫn
Liên kết để bình luậnChia sẻ trên các trang web khác
đánh dấu107
Đăng ngày 2 tháng 12 năm 2019
đánh dấu107
- Các thành viên
- 94
- Tác giả
- Chia sẻ
Đăng ngày 2 tháng 12 năm 2019
T
32 phút trước, Barand nói
stdClass Object [ [user] => Array [ [0] => Array [ [name] => Henry [age] => 24 ] ] [students] => stdClass Object [ [math] => stdClass Object [ [name] => John [id] => 123 ] [science] => stdClass Object [ [name] => Peter [id] => 321 ] ] ]0Điều đó chuyển đổi nó thành một mảng. Để chuyển đổi nó thành một đối tượng, hãy xóa "true"
stdClass Object [ [user] => Array [ [0] => Array [ [name] => Henry [age] => 24 ] ] [students] => stdClass Object [ [math] => stdClass Object [ [name] => John [id] => 123 ] [science] => stdClass Object [ [name] => Peter [id] => 321 ] ] ]1
Cảm ơn lời khuyên của bạn, tôi đã xóa nó nhưng tôi không thể lấy giá trị của `xuất hiện` từ mảng vì tôi cũng gặp lỗi tương tự
Bất kỳ ý tưởng?
- Trích dẫn
Liên kết để bình luậnChia sẻ trên các trang web khác
Barand
Đăng ngày 2 tháng 12 năm 2019
Barand
- người điều hành
- 23. 4k
- 351
- Địa điểm. Cheshire, Vương quốc Anh
- Lứa tuổi. 73
- quyên góp cho tôi
- Chia sẻ
Đăng ngày 2 tháng 12 năm 2019
Đây là một đầu mối
- Trích dẫn
Liên kết để bình luậnChia sẻ trên các trang web khác
đánh dấu107
Đăng ngày 2 tháng 12 năm 2019
đánh dấu107
- Các thành viên
- 94
- Tác giả
- Chia sẻ
Đăng ngày 2 tháng 12 năm 2019
16 phút trước, Barand nói
Đây là một đầu mối
tôi đã thử cái này
tiếng vang $data->data['185. 220. 101. 46']-> xuất hiện;
nó không hoạt động. Bất kỳ ý tưởng?
Sẽ dễ dàng hơn nếu bạn có thể đăng mã của những gì tôi nên sử dụng
- Trích dẫn
Liên kết để bình luậnChia sẻ trên các trang web khác
requinix
Đăng ngày 2 tháng 12 năm 2019
requinix
- quản trị viên
- 14. 4k
- 296
- Địa điểm. Mỹ/Los_Angeles
- Chia sẻ
Đăng ngày 2 tháng 12 năm 2019
Bạn đang trộn truy cập đối tượng và mảng với nhau. Nó sẽ không bao giờ hoạt động. Nó sẽ luôn là chỉ đối tượng truy cập hoặc chỉ đối tượng truy cập mảng
Vì “185. 220. 101. 46" không [thông thường] là tên thuộc tính hợp lệ cho một đối tượng, tôi khuyên bạn nên sử dụng dữ liệu mảng từ json_decode. Sau đó, chỉ sử dụng ký hiệu mảng khi cố gắng lấy giá trị
- Trích dẫn
Liên kết để bình luậnChia sẻ trên các trang web khác
đánh dấu107
Đăng ngày 2 tháng 12 năm 2019
đánh dấu107
- Các thành viên
- 94
- Tác giả
- Chia sẻ
Đăng ngày 2 tháng 12 năm 2019
1 phút trước, requinix nói
Bạn đang trộn truy cập đối tượng và mảng với nhau. Nó sẽ không bao giờ hoạt động. Nó sẽ luôn là chỉ đối tượng truy cập hoặc chỉ đối tượng truy cập mảng
Vì “185. 220. 101. 46" không [thông thường] là tên thuộc tính hợp lệ cho một đối tượng, tôi khuyên bạn nên sử dụng dữ liệu mảng từ json_decode. Sau đó, chỉ sử dụng ký hiệu mảng khi cố gắng lấy giá trị
Tôi không thể xóa "185. 220. 101. 46" bởi vì nó đi kèm với nó khi tôi truy cập vào trang web mà tôi không được phép đăng nó
Vậy tôi phải làm gì sau đó?
Tạo một vòng lặp foreach để tìm nạp các giá trị và lưu trữ trong mảng?
- Trích dẫn
Liên kết để bình luậnChia sẻ trên các trang web khác
requinix
Đăng ngày 2 tháng 12 năm 2019
requinix
- quản trị viên
- 14. 4k
- 296
- Địa điểm. Mỹ/Los_Angeles
- Chia sẻ
Đăng ngày 2 tháng 12 năm 2019
Tôi hiện đang làm việc với một số nhà phát triển nước ngoài ngu ngốc nên tôi sẽ đi thẳng vào vấn đề ở đây