[英]How do I iterate through an stdObject's array?
就像在Java中迭代列表時一樣,這很簡單,就像: while(BLAH.hasNext()) { }
,所以當我在stdObject中有一個我希望遍歷每個數組的數組時,如何在PHP中執行此操作和每個項目?
我一直得到Catchable fatal error: Object of class stdClass could not be converted to string in /Applications/XAMPP/xamppfiles/htdocs/index.php on line 29
<?php
$apiUrl = 'https://api.quizlet.com/2.0/groups/44825?client_id=***BLOCKED FROM PUBLIC***&whitespace=1';
$curl = curl_init($apiUrl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($curl);
if ($json) {
$data = json_decode($json);
echo "<h1>Sets from \"{$data->name}\"</h1>";
foreach ($data->sets as $key => $val) {
echo "$key: $val\n";
}
echo "</ul>";
var_dump($data);
}
?>
您可以/應該使用foreach迭代數組的每個元素。
$foo = new stdClass;
$foo->arr = array('1','7','heaven','eleven');
foreach ($foo->arr as $val)
{
if (is_object($val)) var_dump($val);
else echo $val;
}
注意我添加到var_dump子對象的行。 您最初得到的錯誤是您的集合數組的元素也是對象,而不是預期的字符串。 如果只需要訪問set對象的某些元素,則可以使用$ val-> property訪問它們。
例如,你有一個像這樣的對象
$obj = new stdClass;
$obj->foo = 'bar';
$obj->arr = array('key' => 'val', ...);
$array = (array) $obj;
現在您可以使用foreach迭代數組。
foreach($array as $prop) {
//now if you are not sure if it's an array or not
if(is_array($prop)) {
foreach($prop as $val)
//do stuff
}
else {
//do something else
}
}
$val
變量包含另一個對象(類型為stdClass
),其中包含單個“set”的詳細信息。 如您所見,由於它會生成錯誤,因此無法echo
stdClass
對象。
您可以使用您似乎熟悉的object->property
表示法訪問每個對象內的值。 例如。
foreach ($data->sets as $set) {
echo $set->title . " by " . $set->created_by . "<br>";
}
/*
An example of the JSON object for a single $set
Access these like $set->title and $set->term_count
{
"id": 8694763,
"url": "http:\/\/quizlet.com\/8694763\/wh-test-1-2-flash-cards\/",
"title": "WH Test 1 & 2",
"created_by": "GrayA",
"term_count": 42,
"created_date": 1323821510,
"modified_date": 1323821510,
"has_images": false,
"subjects": [
"history"
],
"visibility": "public",
"editable": "groups",
}
*/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.