当我到达最后一个索引和其他一些条件时,我如何重新启动foreach循环?

循环需要再次运行,相反,它只是停止.

foreach ($getUsers as $index => $user) {
        $userID = saveToDB($user, rand(1,1000));
        if($index == count($getUsers) && alreadyUsed($userID)) {
             reset($getUser);
             reset($index);
        }
}

这不管用

推荐答案

PHP中的reset()函数用于将数组的内部指针重置为其第一个元素,但它不会影响Foreach循环的控制流,您可以实现所需的行为,如下所示:

$continueLoop = true;

while ($continueLoop) {
    foreach ($getUsers as $index => $user) {
        $userID = saveToDB($user, rand(1,1000));

        if ($index == count($getUsers) - 1 && alreadyUsed($userID)) {
            // If you reach the last user and the userID is already used,
            // continue the outer while loop
            continue 2;
        }
    }

    // If the end of the foreach loop is reached without restarting,
    // break out of the while loop
    $continueLoop = false;
}

Php相关问答推荐

在特定日期之间使用特定的元密钥销售产品

如何限制WordPress自定义分类术语页面中的术语数量

在冲突和几何上插入的Postgres参数化查询在PHP中不起作用

目标类[Set_Locale]不存在.拉威尔

如何保存基于用户 Select 的复选框 Select 模式

设置WordPress最近的帖子小部件按修改日期排序

模仿GUZLE中的curl 工作脚本(分块数据和二进制上传一起)

在 WooCommerce 中何时何地执行 woocommerce_order_status_completed_notification 挂钩?

根据支付网关选项更改 WooCommerce Checkout 上的立即付款按钮文本

为什么 php 只能在我的 Nginx Web 服务器的某些目录中工作?

致命错误:未捕获 Google_Exception:客户端机密 JSON 文件无效.在 /somepath/lib/vendor/google/apiclient/src/Google/Client.php

使用 Process facade 在外部 Laravel 项目上运行 Artisan 命令会返回主项目的数据库错误

如何更改或管理Carbon时区,使其不会来回移动时钟

如何在供应商名称后将自定义徽章添加到商品详情

每个发布请求 Laravel 9 的 CSRF 令牌不匹配

如何使 Wordpress Woocommerce 自定义输入字段成为必填字段

如何通过路由传递变量

检测字符串是否包含Letter with Tilde或Letter + Combining Tilde

使用无限循环时 PHP 服务器发送事件错误 500

以 github 样式比较两个数组