首页 文章

如何重写`while - loop`而不使用`while(true)`来避免代码重复[暂停]

提问于
浏览
-1

我研究了一种可能的解决方案 . 它正在使用 while(true)break

解决方案是使用 while(true)break - 这不是干净的代码解决方案 . 我想要另一个干净的解决方案,没有奇怪的结构,如 while(true) .

你能帮我找一个避免重复的明确解决方案吗?

$recommendations_next_months       = [];
    $monthNumber                       = 2;
    $recommendations_products_ids_next = salient_child_get_next_products_ids_recommendations_bunch(
        $recommendations,
        $recommendations_groups,
        $excluded_products_ids,
        3
    );

    while ( !empty( $recommendations_products_ids_next ) ) {
        $recommendations_next_months[] = [
            'title'        => "Рекомендации на $monthNumber месяц",
            'products-ids' => $recommendations_products_ids_next,
        ];

        $recommendations_products_ids_next = salient_child_get_next_products_ids_recommendations_bunch(
            $recommendations,
            $recommendations_groups,
            $excluded_products_ids,
            3
        );

        $monthNumber++;
    }

也许有没有办法实现这一点而不使用 while ?提前致谢!

1 回答

  • 2

    执行后续操作的一种更常见的方法是在实际 while() 本身中分配 $recommendations_products_ids_next ,因此这将获取下一个项目并在值评估为 false 时终止(您可能需要添加 !empty() 但如果它工作则会更好) .

    $recommendations_next_months       = [];
    $monthNumber                       = 2;
    
    while ( $recommendations_products_ids_next = salient_child_get_next_products_ids_recommendations_bunch(
            $recommendations, $recommendations_groups, $excluded_products_ids, 3 )) {
        $recommendations_next_months[] = [
            'title'        => "Рекомендации на $monthNumber месяц",
            'products-ids' => $recommendations_products_ids_next,
        ];
    
        $monthNumber++;
    }
    

    虽然这些名称使它非常易读,但它也使代码很长,较短的名称通常更合适 .

相关问题