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 中的测试值? 的相关文章

  • 通过API更新Twitter背景

    我在通过 Twitter 的 API 更新背景时遇到了一些问题 target url http www google com logos 11th birthday gif ch curl init curl setopt ch CURLO
  • PHP 文件由浏览器下载,而不是由本地开发服务器(MAMP)处理

    一切都很顺利 直到我添加AddHandler application x httpd php5s php到本地服务器文档根目录中的 htaccess 文件 根据我正在使用的站点 我经常更改该文件 因为我访问时这样做了http 本地主机 88
  • 将 XML 数据提取到 php [重复]

    这个问题在这里已经有答案了 我正在尝试从 XML 文件中提取数据 http freegeoip net xml google com http freegeoip net xml google com 您可以看到该文件的内容类似于
  • PHP if in_array 表示多个值

    我有一个由 3 到 12 个值之间的任意位置生成的数组 它根据帐户信息生成该数组 result ad gt user gt groups user username 我想检查这个数组是否有多个值 大约 4 或 5 个 如果其中有任何一个值
  • PHP 数组键字符串不带引号

    我正在将文件移动到服务器 并使用 GET mode 等变量 而 mode 中不带 单引号 它在本地运行良好 但在服务器上我收到通知 我该如何克服这个问题 这是我的 phpinfo 文件phpinfo http solutiq com php
  • 在 PHP 中验证约 400MB 的大型 XML 文件

    我有一个很大的 XML 文件 大约 400MB 在开始处理之前我需要确保它的格式正确 我尝试的第一件事是类似于下面的内容 这很棒 因为我可以找出 XML 是否格式不正确以及 XML 的哪些部分 不好 doc simplexml load s
  • Magento Connect Manager 和 ftp 写入文件权限

    将我的网站从开发域转移到实时域后 我尝试使用 magento 连接管理器安装扩展 但是我不断收到 CONNECT ERROR Please check for sufficient ftp write file permissions Yo
  • MySQL:更新所有行将字段设置为0,但将一行的字段设置为1

    是否有一种有效的方法将行字段的选择更新为 0 但根据 ID 将其中一行设置为 1 基本上 我在数据库中有多个对象 我想在其中一个 inuse 之间切换 因此查询将其中一行 按 id 设置为 inuse 1 将其他行设置为 inuse 0 谢
  • 使用ajax发送表单数据

    我想用 ajax 以表单形式发送所有输入 我有一个这样的表单
  • 数组和关联数组合并

    如何实现第三个数组 合并Array1和Array2 在 PHP 中做到这一点的最佳方法是什么 非常感谢 Array2 具有类似索引 键 即 Array1 中 id 的关联值 Array1 Array 0 gt Array id gt 56
  • YouTube 频道 URL 的正则表达式

    如何使用 REGEX 验证 YouTube 频道 URL 我发现了这个模式 但它不能正常工作 http https www youtube com channel user a zA Z0 9 1 谁能帮我 你的问题是之后的额外管道user
  • 使用 Laravel Fluent 查询生成器从多个表中进行选择

    我正在重写一些 PHP MySQL 来与 Laravel 一起使用 我想做的一件事是使数据库查询更加简洁使用 Fluent 查询生成器 http laravel com docs database fluent但我有点迷失 SELECT p
  • PHP 中的多行字符串文字

    考虑 xml l xml vv echo xml 这将回响vv 为什么以及如何为诸如此类的事情执行多行字符串文字简单XML https en wikipedia org wiki SimpleXML etc Well xml l vv Wo
  • Symfony 5.4 Security Bundle,注册后无法登录

    我在 5 4 版本上构建空的新项目 我使用这些命令来构建项目 composer create project symfony skeleton 5 4 testapp54 cd testapp54 composer require weba
  • 从字符串中删除第一个和最后一个字符

    我有这个 dataList one two three list explode dataList echo pre print r list echo pre 其输出 gt Array gt 0 gt gt 1 gt one gt 2 g
  • Laravel中with()和compact()有什么区别

    功能有什么区别with and compact 在 Laravel 中这两个例子 示例1 return View make books index gt with booksList booksList 示例2 return View ma
  • 如何找出当前正在运行的 PHP 可执行文件?

    在 PHP 程序内部 我想知道执行它的二进制文件的位置 Perl 有 X以此目的 PHP 中有等效的吗 这样它就可以使用自身执行子 PHP 进程 而不是硬编码路径或假设 php 是正确的 UPDATE 我使用的是lighttpd FastC
  • 测验程序的 MySql 数据库设计

    我目前正在开发一个项目 主要是创建一个测验应用程序 它将能够进行包含 10 到 20 个问题的多项选择题或简答题的测验 它需要能够根据正确答案检查用户的答案 然后对用户的答案进行评分 稍后 我可能会实现一个后端功能来在线创建测验 但现在我将
  • 未找到教义列:1054“字段列表”中未知列“s.features”

    我在站点表中添加了一个新列 features 并使用 Doctrine 重新生成了模型 此代码导致错误 siteTable Doctrine Core getTable Site site siteTable gt findOneByNam
  • 如何使用 PHP 从 iframe 获取 url

    如何从下面的链接获取 YouTube 网址 您可以使用 regex 和 preg match 函数 preg match src iframe string match url match 1 UPDATE如果您有使用 php 生成的页面或

随机推荐

  • 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