婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP中的Iterator迭代對象屬性詳解

PHP中的Iterator迭代對象屬性詳解

熱門標簽:保定crm外呼系統運營商 七魚外呼系統停用嗎 智能電話機器人排名前十名南京 海南人工外呼系統有效果嗎 抖音有個地圖標注是什么意思 阿里云400電話申請加工單 地下城堡2圖九地圖標注 西區企業怎么做地圖標注入駐 九江外呼系統

前言

foreach用法和之前的數組遍歷是一樣的,只不過這里遍歷的key是屬性名,value是屬性值。在類外部遍歷時,只能遍歷到public屬性的,因為其它的都是受保護的,類外部不可見。

class HardDiskDrive {

  public $brand;
  public $color;
  public $cpu;
  public $workState;

  protected $memory;
  protected $hardDisk;

  private $price;

  public function __construct($brand, $color, $cpu, $workState, $memory, $hardDisk, $price) {

    $this->brand = $brand;
    $this->color = $color;
    $this->cpu  = $cpu;
    $this->workState = $workState;
    $this->memory = $memory;
    $this->hardDisk = $hardDisk;
    $this->price = $price;
  }

}

$hardDiskDrive = new HardDiskDrive('希捷', 'silver', 'tencent', 'well', '1T', 'hard', '$456');

foreach ($hardDiskDrive as $property => $value) {

  var_dump($property, $value);
  echo 'br>';
}

輸出結果為:

string(5) "brand" string(6) "希捷"
string(5) "color" string(6) "silver"
string(3) "cpu" string(7) "tencent"
string(9) "workState" string(4) "well"

通過輸出結果我們也可以看得出來常規遍歷是無法訪問受保護的屬性的。

如果我們想遍歷出對象的所有屬性,就需要控制foreach的行為,就需要給類對象,提供更多的功能,需要繼承自Iterator的接口:

該接口,實現了foreach需要的每個操作。foreach的執行流程如下圖:

看圖例中,foreach中有幾個關鍵步驟:5個。

而Iterator迭代器中所要求的實現的5個方法,就是用來幫助foreach,實現在遍歷對象時的5個關鍵步驟:

當foreach去遍歷對象時, 如果發現對象實現了Ierator接口, 則執行以上5個步驟時, 不是foreach的默認行為, 而是調用對象的對應方法即可:

示例代碼:

class Team implements Iterator {

  //private $name = 'itbsl';
  //private $age = 25;
  //private $hobby = 'fishing';

  private $info = ['itbsl', 25, 'fishing'];

  public function rewind()
  {
    reset($this->info); //重置數組指針
  }

  public function valid()
  {
    //如果為null,表示沒有元素,返回false
    //如果不為null,返回true

    return !is_null(key($this->info));
  }

  public function current()
  {
    return current($this->info);
  }

  public function key()
  {
    return key($this->info);
  }

  public function next()
  {
    return next($this->info);
  }

}

$team = new Team();

foreach ($team as $property => $value) {

  var_dump($property, $value);
  echo 'br>';
}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • PHP之預定義接口詳解
  • PHP中預定義的6種接口介紹
  • PHP聚合式迭代器接口IteratorAggregate用法分析
  • PHP迭代器接口Iterator用法分析
  • PHP設計模式之迭代器模式Iterator實例分析【對象行為型】
  • PHP設計模式之迭代器(Iterator)模式入門與應用詳解
  • PHP使用DirectoryIterator顯示下拉文件列表的方法
  • php中通過DirectoryIterator刪除整個目錄的方法
  • PHP預定義接口——Iterator用法示例

標簽:梅河口 昭通 十堰 甘肅 遼陽 涼山 九江 韶關

巨人網絡通訊聲明:本文標題《PHP中的Iterator迭代對象屬性詳解》,本文關鍵詞  PHP,中的,Iterator,迭代,對象,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP中的Iterator迭代對象屬性詳解》相關的同類信息!
  • 本頁收集關于PHP中的Iterator迭代對象屬性詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 三江| 分宜县| 陆河县| 容城县| 杭州市| 建始县| 山东| 库尔勒市| 越西县| 北安市| 泗阳县| 卫辉市| 雷山县| 云浮市| 镶黄旗| 定兴县| 景宁| 旅游| 安吉县| 灌南县| 永兴县| 绥化市| 常宁市| 甘南县| 始兴县| 东丽区| 北安市| 宜昌市| 汽车| 宣武区| 隆尧县| 策勒县| 鸡泽县| 神木县| 甘谷县| 锦屏县| 泰州市| 嵩明县| 林州市| 贞丰县| 安新县|