2 回答
TA贡献1845条经验 获得超8个赞
continue 只在它被使用的循环中工作 - 的 foreach ($items as $item)
如果你想在验证函数中使用它,你要么需要传回某种有效选项数组 - 或者在 for 循环中使用验证 ...// further code
就像是:
public function checkItems(int $id, array $items)
{
foreach($items as $item) {
if ($this->validateItems($id, $item) {
...// further code
}
}
return $items;
}
private function validateItems(int $id, array $item)
{
//$id is never used?
if (!is_int($item->itemId)) {
return false;
}
return true;
}
TA贡献1826条经验 获得超6个赞
循环内的 continue 命令跳过该循环内它下面的任何代码,并从顶部开始循环。
因此,将它放在任何循环的末尾都没有区别,因为没有其他代码可以跳过。和循环从顶部开始,就好像没有继续命令一样。
如果您以这种方式进行验证,则它需要继续,则此继续将始终指代它所在的循环。因此,如果您将其移动到其他函数,它会跳过该函数内部循环下方的代码的执行,但这不会影响任何其他循环,尤其是在其他函数中。
因此,如果您在 checkItems() 内的 foreach 内使用 continue ,它将跳过该函数的 foreach 内的命令。
但是,如果您将 continue 移至函数 validateItems() 并从 checkItems() 内部调用该函数,则在 checkItems() 内部将不会影响使用 validateItems() 内部的 continue
到第二部分如何进行验证。
你的验证器应该返回一个真/假,并在 checkItems() 中测试它,如果它是假的,那么你使用 continue
<?php
public function checkItems(int $id, array $items)
{
$this->validateItems($id, $items);
foreach($items as $item) {
if(false === $this->validateItems($id, $items)) {
continue;
}
...// further code
}
return $items;
}
private function validateItems(int $id, array $items)
{
foreach ($items as $item) {
if (!is_int($item->itemId)) {
return false;
}
}
return true;
}
- 2 回答
- 0 关注
- 183 浏览
添加回答
举报