简化平面数组或多维数组的循环

2024-04-20

通常,我会有一个数组来保存一组值,每个值我都需要处理。有时,数组仅保存单个集合,在这种情况下,每个值都需要经过该过程。其他时候,数组将保存许多集合,在这种情况下,每个值都将是一个数组,并且这些数组中的每个值都需要进行处理。这是一个例子:

foreach($array as $key => $value) {
    if(is_array($value)) {
        foreach($value as $subkey => $subvalue) {
            //Process $subvalue here    
        }
    }
    else {
        //Process $value here
    }
}

问题是处理 $value/$subvalue 的代码是相同的,只是它操作的是不同的变量。简化此操作的一种方法是将代码放入函数中,但必须调用它两次似乎仍然不优雅。此外,这会在该函数之外留下大量代码(foreach 循环和数组测试)。例如,假设该过程是验证,那么每当我想调用验证函数时,我不想编写两个 foreach 循环和一个数组测试。

有更简单的方法吗?


您可以使用RecursiveArrayIterator http://de.php.net/manual/en/class.recursivearrayiterator.php迭代数组中的值,例如

$iterator = new RecursiveIteratorIterator(
                new RecursiveArrayIterator($yourArray),
                RecursiveIteratorIterator:SELF_FIRST);

然后就foreach超过它。进一步阅读:

  • http://www.phpro.org/tutorials/Introduction-to-SPL.html#7 http://www.phpro.org/tutorials/Introduction-to-SPL.html#7
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简化平面数组或多维数组的循环 的相关文章

  • 如何将一个变量的字符串分配给另一变量?

    这是我在这个网站上的第一个问题 如何将一个变量的字符串分配给另一变量 我在这里做错了什么 include
  • 这个巨大的正则表达式是如何工作的?

    我最近在我的一个目录中的一个名为的文件中找到了下面的代码doc php 文件功能或链接到文件管理器 做得非常好 基本上 它列出了当前目录中的所有文件 并且允许您更改目录 它可以访问我的所有文件 添加 重命名 信息 删除 我不记得安装过它 我
  • 在 Laravel 中的编辑表单上获取选定选项

    我的网站订单有一个可编辑的表单 并且有以下字段 User quantity note status 我在此表单中还有其他选项 但只有这些字段对我来说很重要 以便能够获取默认值 例如 我希望能够查看用户默认订购的数量 然后我可以更改它或保留它
  • php基于onclick函数输入日期类型

    用户选择日期 月份和年份 然后按一个按钮 根据他选择的日期向他显示数据库的值 不知道代码问题出在哪里
  • 调整ArrayBuffer的大小

    如果我想创建一个数组缓冲区 我会写 var buff new ArrayBuffer size 但是如何调整现有缓冲区的大小呢 我的意思是 在缓冲区末尾添加更多字节 ArrayBuffer 本身没有设置 有set https develop
  • 删除二维数组C++[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 这两种释放二维数组的方法是否相似 int M new int 5 for int i 0 i lt 5 i M i new int 3 fo
  • 检查字符串是否是哈希值

    我正在使用 SHA 512 来散列我的密码 当然还有盐 我认为我想要的不可能 但无论如何我们还是要问一下 有没有办法检查字符串是否已经是 SHA 512 或其他算法 哈希值 当用户登录时 我想检查他的密码 如果它仍然是纯文本 则应将其转换为
  • 将IP保存到数据库中

    当用户登录时 我想将他们的 IP 保存在数据库中 我该怎么做呢 MySQL 字段最适合使用哪种类型 获取IP的PHP代码是什么样的 我正在考虑将其用作登录 会话内容的额外安全功能 我正在考虑使用用户现在拥有的 IP 检查用户从数据库登录的
  • PHP-docker容器中的环境变量

    我想在我的 docker 容器中显示一个环境变量 PHP 脚本如下所示 我使用 OpenShift 来启动容器 PHP 容器显示 env is 现在我更改容器的 dc 配置 oc env dc envar USER Pieter deplo
  • Composer 无法获取 github

    今天 我尝试通过运行来安装 Laravelcomposer create project laravel laravel 5 1 myproject prefer dist我收到此错误 Could not fetch https api g
  • 如何使用 jQuery Ajax 将 PHP 数组值传递到另一个文件?

    这是我的代码
  • 使用 yum 和 pear 安装 php-soap 均失败

    我正在尝试在 Centos 6 4 服务器上安装 PHP 的 SOAP 扩展 我对包管理器 从 CLI 安装包并在 PHP 中配置它们相当不熟悉 我相当有能力管理 php ini 和其他 PHP 配置文件 soap ini 等 我尝试使用以
  • 扩展构建器中的“映射到现有表”显示 TYPO3 中的奇怪问题

    在我的扩展中MyExt 我映射了模型Page to pagesTYPO3 中的表 首先它向我展示了type mismatch错误 无论如何我继续保存它 会发生以下情况 我的页面树变成这样 我的新记录表单仅显示 UID 而不显示标题 My P
  • 使用正则表达式搜索 Ruby 数组

    你好 我有一个小的 ruby 函数 它可以分割出一个 Ruby 数组 如下所示 def rearrange arr from to sidx arr index from eidx arr index to arr sidx arr sid
  • PHP switch case 在 case 中存在多个值

    我有一个变量保存值 每周 每月 季度 和 年度 还有另一个变量保存值从 1 到 10 switch var2 case 1 var3 Weekly break case 2 var3 Weekly break case 3 var3 Mon
  • 通过 Python 循环浏览网络上的目录并显示其内容(文件和其他目录)

    同样的道理在Python中处理从源目录到目标目录的一组文件 https stackoverflow com questions 2593399 process a set of files from a source directory t
  • PHP 中的encodeURI() ?

    PHP 中是否有一些不编码的encodeURI 函数 我现在用这个 function encodeURI url http php net manual en function rawurlencode php https develope
  • 使用 file_get_content 发布数据

    我已经做了一些关于如何使用的研究file get content与帖子 我也读过this one https stackoverflow com questions 2445276 how to post data in php using
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子

随机推荐

  • 部分彩色文本并使其在 Jetpack Compose 中可点击 [重复]

    这个问题在这里已经有答案了 对于 XML 中声明的视图 我们可以使用SpannableStringBuilder正如这里提到的https stackoverflow com a 4897412 9715339 https stackover
  • 已经运行的应用程序现在出现套接字错误 10013

    我在 VB NET 中完成了一个应用程序 该应用程序侦听特定的 UDP 端口并通过同一端口应答发送数据包的 IP 从几年到上个月 它都运行良好 现在当尝试回答由于套接字错误 10013 导致的崩溃时 我什至尝试了一个我知道它也可以工作的旧版
  • JavaScript 中的 FFMPEG 命令

    是否可以使用如下命令 ffmpeg i video 1920 mp4 vf 比例 640 360 video 640 mp4 hide banner在纯 JavaScript 中降低视频的分辨率 例如 我有一个下拉菜单 其中有标签 所以我想
  • JTextArea 组件中的 Unicode 支持 [重复]

    这个问题在这里已经有答案了 我制作了这个简单的程序 我想在 JTextArea 中显示 unicode 符文字符 u16e6 该符号显示在 JFrame 的顶部 但不在 JTextArea 中 我已将 JTextArea 的字体设置为与 J
  • 如何远程在BitBucket上创建存储库?

    我想在 Bitbucket 上使用 hg 命令从本地计算机创建存储库 而不是在 Bitbucket 上手动创建存储库 是否可以 我通过curl 命令使用REST API 执行了以下操作 gt curl k X POST user user
  • 如何正确确定Intel处理器的-march和-mtune?

    我目前正在从源代码构建一个对我来说性能至关重要的软件 因此 我想对其进行优化 以便在我的特定 Intel CPU 上运行 构建过程要求我设置 march 和 mtune 标志 如果在我的处理器节点上我使用 gcc march native
  • 使用QThread定期更新一个QTableWidget pyqt

    在我的应用程序中 我使用 API 调用获取记录 然后将数据动态添加到 QTableWidget 这是到目前为止我的代码片段 class TriageUI QtGui QMainWindow def init self QtGui QMain
  • 使用并发.futures 中的 ThreadPoolExecutor 时的 max_workers 数量?

    在决定从并发 futures 中将 ThreadPoolExecutor 中的 max workers 设置为什么时需要考虑哪些因素 只要您期望 Python 3 5 可用 是否有任何理由不将 max workers 设置为 None 然后
  • 找到所有潜在最长序列的Pythonic方法

    所以 我有一个如下所示的列表 potential labels foo foo bar foo bar baz abc abc cde def bleh The desired output foo bar baz abc cde def
  • 使用令牌身份验证的 Java HTTP 请求

    我正在尝试向我正在运行的本地服务器发出 GET 请求 我无法返回正确的数据 我看到 未经授权 的响应 鉴于字符串 令牌 是正确的 任何人都可以发现任何明显的问题吗 protected Object doInBackground Void p
  • ClientError:调用 HeadObject 操作时发生错误 (403):禁止

    我正在创建一个 AWS Lambda 函数 尝试将文件 s3 download file 下载到我使用以下命令创建的临时目录tempfile来自 Python 3 6 的库 然后 我对文件进行一些转换 并且需要再次上传它 s3 upload
  • 访问自动属性中的支持字段

    有什么方法可以访问属性的支持字段以进行验证 更改跟踪等 像下面这样的事情可能吗 如果没有 是否有计划将其纳入 NET 4 C 4 public string Name get set if value
  • Oracle 中的第 N 个最高薪水

    为了找出oracle中的第N个最大sal 我使用下面的查询 SELECT DISTINCE sal FROM emp a WHERE SELECT COUNT DISTINCE sal FROM emp b WHERE a sal lt b
  • `$eq` 运算符是否适用于数组点表示法?

    我正在尝试编写一个聚合查询 expr inside lookup s match管道阶段 我发现了一些与数组点表示法相关的问题 想象一个集合relations数组字段称为nodes 以下查询可以正常返回正确的结果 db relations
  • 预防孤儿

    我试图通过在段落和标题内的最后两个单词之间添加不间断空格来防止出现单个单词孤儿 然而 我正在使用的脚本也有删除链接的副作用 p h1 h2 h3 h4 h5 h6 each function var wordArray this text
  • 一个模拟键盘按下的程序

    我是编程新手 我想编写一个程序 仅供自用 每次运行时都会重复一组预设的键盘操作 有人可以给我一些建议吗 是否有任何应用程序可以做到这一点 有各种各样的程序可以满足您的需求 如果你在 Windows 上 自动热键 http www autoh
  • jmeter恒定视频流

    我正在使用 Jmeter 来加载测试视频流 我可以传递登录信息 但我需要让 Jmeter 在提供视频流的页面上 保持 我怎样才能做到这一点 我已经设置了 cookie 管理器 如果视频流不在您的服务器上 您根本不需要测试它 例如 如果您的网
  • 本地化系统生成的隐私警报消息 iOS UIAlertView Xcode

    我正在使用 Xcode Swift 1 1 开发一个应用程序 并使用 iOS 7 1 和 iOS 8 1 模拟器对其进行测试 该应用程序允许用户访问他们的照片库 但在此之前 iOS 会显示隐私警报消息标题 以英语请求用户许可 App Nam
  • 使用 SearchView android studio 工具栏中的左侧空间

    我正在尝试添加一个简单的SearchView到我的应用程序中的工具栏 除了布局之外 一切都工作正常 之间有这个 空间 NavigationDrawer图标和SearchView 如果我设置了标题 则空间将填充该字符串 否则为空 空字符串 标
  • 简化平面数组或多维数组的循环

    通常 我会有一个数组来保存一组值 每个值我都需要处理 有时 数组仅保存单个集合 在这种情况下 每个值都需要经过该过程 其他时候 数组将保存许多集合 在这种情况下 每个值都将是一个数组 并且这些数组中的每个值都需要进行处理 这是一个例子 fo