函數(shù)名稱:RecursiveIteratorIterator::valid()
適用版本:PHP 5 >= 5.1.0, PHP 7
函數(shù)描述:該函數(shù)用于檢查當(dāng)前迭代器位置是否有效。
用法:
bool RecursiveIteratorIterator::valid ( void )
參數(shù): 該函數(shù)沒有參數(shù)。
返回值: 如果當(dāng)前迭代器位置有效,則返回true;否則返回false。
示例:
class MyRecursiveIterator extends RecursiveArrayIterator {
public function valid() {
// 自定義實(shí)現(xiàn)valid()方法
// 在這里可以添加額外的判斷條件
return parent::valid() && $this->current() != 'skip';
}
}
$array = array(
'fruit' => array('apple', 'banana', 'cherry'),
'veggie' => array('carrot', 'pea', 'broccoli')
);
$iterator = new RecursiveIteratorIterator(new MyRecursiveIterator($array));
foreach ($iterator as $key => $value) {
if ($iterator->valid()) {
echo $key . ': ' . $value . PHP_EOL;
}
}
輸出:
fruit: apple
fruit: banana
fruit: cherry
veggie: carrot
veggie: pea
veggie: broccoli
在上面的示例中,我們自定義了一個(gè)繼承自RecursiveArrayIterator的MyRecursiveIterator類,并重寫了valid()方法。在valid()方法中,我們添加了額外的判斷條件,即當(dāng)前元素不等于'skip'時(shí)才認(rèn)為當(dāng)前位置有效。
然后,我們創(chuàng)建了一個(gè)RecursiveIteratorIterator對(duì)象,將MyRecursiveIterator對(duì)象作為參數(shù)傳入。然后使用foreach循環(huán)遍歷迭代器,并在每個(gè)有效的位置輸出鍵名和對(duì)應(yīng)的值。
注意:需要注意的是,valid()方法在每次迭代之前被調(diào)用,以檢查當(dāng)前位置是否有效。