色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php filteriterator

PHP FilterIterator可以在迭代器輸出內(nèi)容前進(jìn)行篩選處理。當(dāng)我們需要按照特定的規(guī)則來篩選輸出內(nèi)容時(shí),就可以使用PHP FilterIterator來完成這個(gè)任務(wù)。

下面我們舉一個(gè)簡(jiǎn)單的例子來演示PHP FilterIterator的用法:

class MyIterator extends FilterIterator {
public function accept() {
$current = $this->getInnerIterator()->current();
return ($current % 2 == 0);
}
}
$array = new ArrayIterator(array(1, 2, 3, 4, 5, 6));
$iterator = new MyIterator($array);
foreach ($iterator as $key =>$value) {
echo "{$key} =>{$value}\n";
}

上面的代碼中,我們定義了一個(gè)MyIterator類,繼承了PHP內(nèi)置的FilterIterator,并且重寫了accept()方法。accept()方法用來判斷當(dāng)前迭代器的內(nèi)容是否滿足條件,如果滿足條件就返回true,否則返回false。在這個(gè)例子中,我們定義了一個(gè)奇偶性的篩選規(guī)則,只有當(dāng)?shù)鞯膬?nèi)容是偶數(shù)才會(huì)輸出到屏幕上。

下面我們?cè)賮砜匆粋€(gè)更加具體的例子,假設(shè)我們有一個(gè)從數(shù)據(jù)庫里面讀數(shù)據(jù)的迭代器,我們想要將用戶的密碼字段篩選出來,在輸出之前進(jìn)行加密處理,那么就可以使用PHP FilterIterator來完成。

class UserPasswordFilter extends FilterIterator {
public function current() {
$password = $this->getInnerIterator()->current()->password;
return password_hash($password, PASSWORD_DEFAULT);
}
public function accept() {
return property_exists($this->getInnerIterator()->current(), 'password');
}
}
$pdo = new PDO('mysql:host=localhost;dbname=my_db;charset=utf8', 'my_user', 'my_password');
$iterator = new ArrayIterator($pdo->query('SELECT * FROM users'));
foreach (new UserPasswordFilter($iterator) as $user) {
echo $user->password;
}

在這個(gè)例子中,我們定義了一個(gè)UserPasswordFilter類,繼承了PHP內(nèi)置的FilterIterator,并且重寫了current()方法和accept()方法。current()方法用來返回當(dāng)前迭代器的內(nèi)容,我們?cè)诜祷刂皩?duì)密碼字段進(jìn)行了加密處理。accept()方法用來判斷當(dāng)前迭代器的內(nèi)容是否滿足條件,只有當(dāng)當(dāng)前內(nèi)容中存在password屬性時(shí)才返回true。

PHP FilterIterator的使用非常靈活,可以根據(jù)實(shí)際需求進(jìn)行定制化編寫篩選規(guī)則。但是需要注意的是,F(xiàn)ilterIterator并不是對(duì)原有迭代器進(jìn)行修改,而是創(chuàng)建了一個(gè)新的迭代器。因此,在使用完FilterIterator后一定要記得銷毀。