打破其他功能/方法/东西的循环......?

时间:2017-11-20 12:02:07

标签: php function loops

是否可以使用内部函数/方法或其他内容来中断循环?

假设此代码:

do {
    $page = $this->get_page($this->profile_link . '&page=' . $page_count);

    if ($this->pageNotExists($page, 'has no public')) {
         break;
    }

    $links = array_merge($links, $this->get_videos_from_given_page($page));

    $page_count++;
} while (1);

我想接受这一部分:

if ($this->pageNotExists($page, 'has no public')) {
    break;
}

从这个可重复使用的方法/功能或其他会在这里打破的东西。

我只是不喜欢这部分代码。

我还有其他使用相同代码部分的方法。这是代码重复,我不喜欢它。

因此可以将此代码提取到函数/方法或其他内容,将其从此处取出

if ($this->pageNotExists($page, 'has no public')) {
    break;
}

虽然仍然有相同的结果并且所有工作都一样吗?

2 个答案:

答案 0 :(得分:-1)

程序外部的break语句(例如,不在控件循环中)将结束脚本。当我错误地在if语句中休息时,这引起了我的注意

<?php 
echo "hello";
if (true) break;
echo " world"; 
?>

只会显示&#34;你好&#34;

答案 1 :(得分:-1)

没有办法直接完成你要求的东西。代码的流程应该清楚。除非它抛出异常,否则函数不应该能够中断它。

您可能希望将逻辑直接移动到循环条件中。

while ($page = $this->getPageByPageCount($page_count)) {
    ...
}

getPageByPageCount定义为:

private function getPageByPageCount($page_count) {
    $page = $this->get_page($this->profile_link . '&page=' . $page_count);
    if (!pageCheck($page)) {
        return null;
    }
    return $page;
}