2 回答

TA貢獻1845條經(jīng)驗 獲得超8個贊
continue 只在它被使用的循環(huán)中工作 - 的 foreach ($items as $item)
如果你想在驗證函數(shù)中使用它,你要么需要傳回某種有效選項數(shù)組 - 或者在 for 循環(huán)中使用驗證 ...// 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條經(jīng)驗 獲得超6個贊
循環(huán)內(nèi)的 continue 命令跳過該循環(huán)內(nèi)它下面的任何代碼,并從頂部開始循環(huán)。
因此,將它放在任何循環(huán)的末尾都沒有區(qū)別,因為沒有其他代碼可以跳過。和循環(huán)從頂部開始,就好像沒有繼續(xù)命令一樣。
如果您以這種方式進行驗證,則它需要繼續(xù),則此繼續(xù)將始終指代它所在的循環(huán)。因此,如果您將其移動到其他函數(shù),它會跳過該函數(shù)內(nèi)部循環(huán)下方的代碼的執(zhí)行,但這不會影響任何其他循環(huán),尤其是在其他函數(shù)中。
因此,如果您在 checkItems() 內(nèi)的 foreach 內(nèi)使用 continue ,它將跳過該函數(shù)的 foreach 內(nèi)的命令。
但是,如果您將 continue 移至函數(shù) validateItems() 并從 checkItems() 內(nèi)部調(diào)用該函數(shù),則在 checkItems() 內(nèi)部將不會影響使用 validateItems() 內(nèi)部的 continue
到第二部分如何進行驗證。
你的驗證器應(yīng)該返回一個真/假,并在 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 關(guān)注
- 203 瀏覽
添加回答
舉報