PHP 有没有办法在 foreach 中重新启动循环,或更改 switch 中的测试值?

2024-03-13

如果我正在循环一个数组,并且在其中一个循环的中间我发现一些小问题,改变......一些东西......,并且需要重试......有没有办法跳回到循环顶部而不从数组中获取下一个值?

我怀疑这是否存在,但它会是一些关键字,例如continue or break。事实上,它很像continue,除了它不会获取下一个项目外,它会保留内存中的内容。

如果什么都不存在,我可以将一些东西插入到数组中,使其成为循环中的下一个键/值吗?

也许一段时间(array_shift())会更容易......

或者我认为循环内的递归函数可能会起作用。

好吧,当我输入此内容时,我的问题正在不断发展,因此请查看此伪代码:

foreach($storage_locations as $storage_location) {
    switch($storage_location){
        case 'cookie':
            if(headers_sent()) {
                // cannot store in cookie, failover to session
                // what can i do here to run the code in the next case?
                // append 'session' to $storage_locations?
                // that would make it run, but other items in the array would run first... how can i get it next?
            } else {
                set_cookie();
                return;
            }
        break;

        case 'session':
            set_session();
            return;
        break;
    }
}

我确信没有关键字可以更改在交换机中流中测试的值...那么我应该如何重构此代码来实现故障转移?


不与foreach,但需要更多手动数组迭代:

while (list($key, $value) = each($array)) {
    if (...) {
        reset($array); // start again
    }
}

http://php.net/each http://php.net/each
http://php.net/重置 http://php.net/reset

看起来简单的失败就可以解决问题:

switch ($storage_location) {
    case 'cookie':
        if (!headers_sent()) {
            set_cookie();
            break;
        }

        // falls through to next case

    case 'session':
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 有没有办法在 foreach 中重新启动循环,或更改 switch 中的测试值? 的相关文章

随机推荐

  • Ubuntu Nginx/Laravel 500 内部服务器错误

    当我尝试访问时说 Http localhost page我从 nginx 收到 500 内部服务器错误 500 Internal Server Error nginx 1 1 19就是页面上的全部内容 在日志文件中我收到此错误 2014 0
  • Java:startingPath 作为“public static final”异常

    已更新 对更改感到抱歉 但现在是真正的问题了 对于 getCanonicalPath 方法的异常 我无法在其中包含 try catch loop 我尝试先用方法解决问题 然后在那里声明值 问题是它是最终的 我无法更改它 那么如何将start
  • WPF ListBox 触发器不适用于 IsFocused 属性

    我想设计我的风格ListBox并显示一个Border周围 我想隐藏这个Border when ListBox获得焦点
  • 如何在不征求用户许可的情况下获取 Facebook 用户的公开信息?

    有没有一种方法可以在不征求用户许可的情况下获取用户的公开信息 在facebook中 我知道我们可以获取用户的基本信息 例如id 姓名 图片 性别和他的区域设置 但不是他的其他公开信息 而无需征求他的许可 看这个链接 http zesty c
  • 如何使用流畅的配置在 Entity Framework 6.2 中创建索引

    有没有办法使用流畅的配置在属性 列上创建索引 而不是使用新的IndexAttribute https msdn microsoft com en us library jj591583 v vs 113 aspx Anchor 10 那么
  • 如何让Java使用机器上的所有CPU资源?

    我有时用 Java 编写代码 我注意到有时它在多核机器上使用超过 100 的 CPU 我现在正在一台具有 33 个 CPU 亚马逊的 EC2 的多核机器上运行一些代码 我想让我的 Java 进程使用所有可用的 CPU 这样它将具有非常高的机
  • 跨平台一致的伪随机数

    我正在寻找一种生成伪随机数序列的方法 该方法将在任何平台上为给定种子生成相同的序列结果 我假设rand srand 不会是一致的 我的这个假设很容易是错误的 像一个Mersenne Twister 来自 Boost Random http
  • 如何在 glob() 模式中编写“或”?

    glob glob 不使用正则表达式 它使用 Unix 路径扩展规则 我如何在 glob 中模拟这个正则表达式 jpg png 很好glob你应该这样做 lst glob glob jpg glob glob png
  • SVN反向合并?

    我的 SVN 存储库在修订版 497 时非常完美 我执行了几次错误的提交 因此现在它处于修订版 HEAD 我发现要回滚 您应该使用如下命令 svn merge r HEAD 497 在工作目录中 并且工作目录位于 HEAD 修订版 但这是正
  • PHP 从字符串中获取搜索词数组

    有没有一种简单的方法来解析字符串以查找包括否定词在内的搜索词 this that the other thing but not this positive 会变成 array positive gt array this the othe
  • pytz 在 Mac 上安装

    Django 通知我 ImportError 没有名为 pytz 的模块 但是当我使用 pip 安装它时 我得到以下结果 Requirement already satisfied use upgrade to upgrade pytz i
  • MySQL通过数组中的键搜索json值

    我有一个 JSON 对象数组 想要返回一个特定的节点 为了简化我的问题 假设数组可能如下所示 Race Orc strength 14 Race Knight strength 7 例如 我想知道骑士的实力 功能JSON SEARCH ht
  • 通过函数打开流

    我需要有关不可复制性质的帮助 io f streams 我需要提供一个黑客包装fstreams 以便在 Windows 上处理文件名中包含 unicode 字符的文件 为此 我设计了一个包装函数 bool open ifstream ist
  • ImportError:在 apache 上安装 django mod_wsgi 配置中没有名为 django.core.handlers.wsgi 的模块

    我尝试安装 django 以与 apache 和 mod wsgi 一起使用 但出现此错误 ImportError No module named django core handlers wsgi 我读到这可能是用户错误 在控制台 ssh
  • 从 Redis 中删除会话 (Django)

    我使用 Django 和 Redis 作为会话引擎 也是 Celery 但那是别的东西 它运行完美 我可以看到速度的提高 SESSION ENGINE django contrib sessions backends cached db 我
  • 需要哪些 Visual C++ DLL?

    我不喜欢必须为使用 Microsoft 编译器编译的程序分发安装程序 我更喜欢使用与可执行文件打包在同一目录中的 DLL 那么 MSVC 2010 所需的 DLL 是什么 没有一个简单的答案 因为这取决于您在程序中构建的依赖项 您可能想使用
  • 在 Laravel 5 或 4.3 中包含 CSS

    TL DR 在 Laravel 5 中链接到样式表的正确方法是什么 背景 我使用 Laravel 4 3 5 的开发版本 因为我想使用 Socialite 从一开始就使用它进行开发是有意义的 我在从 4 2 传输模板时遇到问题 我已将刀片布
  • 跟踪 python:仅包含一些文件

    我知道我可以用它来跟踪命令执行 python m trace t script py 但我想减少输出 只应显示我的 src pip install e 中的文件 我怎样才能做到这一点 如果您正在运行脚本bash你可以使用类似的东西 pyth
  • 模块“tensorflow.python.keras.api._v2.keras.layers”没有属性“CuDNNLSTM”

    当我写作时tf keras layers LSTM 我收到警告 Note that this layer is not optimized for performance Please use tf keras layers CuDNNLS
  • PHP 有没有办法在 foreach 中重新启动循环,或更改 switch 中的测试值?

    如果我正在循环一个数组 并且在其中一个循环的中间我发现一些小问题 改变 一些东西 并且需要重试 有没有办法跳回到循环顶部而不从数组中获取下一个值 我怀疑这是否存在 但它会是一些关键字 例如continue or break 事实上 它很像c