Hướng dẫn php array iterator
IteratorIterator về bản chất là một interface chuẩn được xây dựng sẵn trong PHP để bạn giễ dàng thao tác với các bộ giá trị. Cấu trúc của interface iterator trong PHP mặc định khai báo một số phương thức như sau: interface Iterator{ function rewind(); function current(); function key(); function next(); function valid(); } Vậy nên lớp nào sử dụng interface interator đều phải định nghĩa các phương thức trên. Chúng ta sẽ cùng xem xét một ví dụ về việc sử dụng interator để duyệt mảng trả về từ CSDL. class QueryInterator implements Iterator{ private $result; private $connection; private $key=0; private $valid; private $data; function __construct($host, $user, $password, $dbname){ $this->connection = mysql_connect($host,$user, $password); mysql_selectdb($dbname,$this->connection); } public function exceute($query){ $this->result = mysql_query($query,$this->connection); if(mysql_num_rows($this->result) > 0){ $this->next(); } } public function current(){ return $this->data; } public function rewind(){} public function key(){ return $this->key; } public function next(){ if($this->data = mysql_fetch_assoc($this->result)){ $this->valid = true; $this->key +=1; }else{ $this->valid = false; } } public function valid(){ return $this->valid; } } $q = new QueryInterator("localhost","root","","test"); $q->exceute("SELECT name FROM ex1"); echo ''; while($q->valid()){ print_r($q->current()); $q->next(); } echo ''; ArrayIteratorArrayIterator về bản chất nó là đối tượng được xây dựng sẵn trong thư viện PHP chuẩn và lớp này sử dụng iterface iterator. Trong bài viết trước có đề cập đến ArrayObject cũng là đối tượng được xây dựng sẵn trong thư viện PHP chuẩn và nó có phương thức __construct() như sau: __construct ($array, $flags=0, $iterator_class="ArrayIterator") Chúng ta thấy đối số thứ 3 mặc định đã được khởi tạo là "ArrayIterator" để đối tượng dạng mảng có thể sử dụng đối tượng ArrayIterator thông qua phương thức
getIterator(). Tham khảo "object-oriented programming with PHP5 _ Hasin Hayder". (PHP 5 >= 5.1.0, PHP 7, PHP 8) iterator_to_array — Copy the iterator into an array iterator_to_array(Traversable The iterator being copied. Whether to use the iterator element
keys as index. If a key is an array or object, a warning will be generated.
Return Values An array containing the elements of the ExamplesExample #1 iterator_to_array() example
The above example will output: array(4) { ["recipe"]=> string(8) "pancakes" [0]=> string(3) "egg" [1]=> string(4) "milk" [2]=> string(5) "flour" } array(4) { [0]=> string(8) "pancakes" [1]=> string(3) "egg" [2]=> string(4) "milk" [3]=> string(5) "flour" } jerome at yazo dot net ¶ 13 years ago
= new ArrayIterator( array('k1' => 'a' , 'k2' => 'b', 'k3' => 'c', 'k4' => 'd') );
joksnet at gmail dot com ¶ 7 years ago
Harry Willis ¶ 7 years ago
wizzard351 at yahoo dot com ¶ 5 months ago
chad 0x40 herballure 0x2e com ¶ 14 years ago
enelar at develop-project dot ru ¶ 5 years ago
|