gpt4 book ai didi

php - 对象 LimitIterator - OutOfBoundsException

转载 作者:搜寻专家 更新时间:2023-10-31 22:15:46 26 4
gpt4 key购买 nike

如果对象 LimitIterator 为空,我如何编写一个不运行下面的 foreach 的条件?

$numbers = array(5, 19, 8, 35, 50);

$iterator = new ArrayIterator($numbers);

$limiter = new LimitIterator($iterator, 5, 2);

foreach($limiter as $number)
{
echo $number.'<br/>';
}

上面的代码返回这个错误,

Fatal error: Uncaught exception 'OutOfBoundsException' with message 'Seek position 5 is out of range' in ..
OutOfBoundsException: Seek position 5 is out of range in..

我只是不想在对象 LimitIterator 为空时运行 foreach

编辑:

为什么 $limiter->valid(); 总是返回 false?我在 page 上运行下面的代码在我的网站上,

$numbers = array(5, 19, 8, 35, 50);

$iterator = new ArrayIterator($numbers);

$limiter = new LimitIterator($iterator, 0, 2);

var_dump($limiter->valid());

if ($limiter->valid())
{
foreach($limiter as $number)
{
echo $number.'<br/>';
}
}

最佳答案

OutOfBoundsExceptionLimitIterator 时抛出倒带后尝试在 foreach 的最开始寻找起始偏移量循环。

如果你想测试查找位置是否正确,那么 rewind()或手动 seek()try/catch 内 block 。

try {
$limiter->rewind();
} catch (OutOfBoundsException $e) {
// Do whatever
}

当然,您可以包装您的 foreach循环 try/catch阻止


Why does $limiter->valid(); always return false?

它不会总是返回false , 只有当它不在有效位置时。

LimitIterator在您的脚本中,在调用 valid() 时, 没有被告知沿着自身或内部迭代器移动到任何地方。直到 rewind()seek()已被调用,它无法处于有效位置。

关于php - 对象 LimitIterator - OutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6631579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com