我需要有一个类似mysql资源的行为的函数,在这里你必须“获取”某些东西作为循环的一部分,直到它返回false。
我有类似的东西:
while ($variable = $object->method())
{
// Do stuff with variable here
}
我试图弄清楚如何在我的目标上最好地跟踪从该方法发送的内容。
class object {
$values = array(1, 2);
public function method()
{
// First call should return 1, second should return 2, and any subsequent calls should return FALSE
// Not sure now what to do
// return $values[$i];
}
}
答案 0 :(得分:2)
答案 1 :(得分:0)
您可以在案件中return array_shift($values)
。 (docs)。
答案 2 :(得分:0)
您也可以通过实施Iterator或IteratorAggregate界面,通过foreach使您的对象“可遍历”,例如:
<?php
class object implements IteratorAggregate {
protected $values;
public function __construct() {
$this->values = range(1,10);
}
public function getIterator() {
return new ArrayIterator($this->values);
}
}
$o = new object;
foreach( $o as $e ) {
echo $e;
}
打印12345678910