簡體   English   中英

如何遍歷stdObject的數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM