迭代多维关联数组 PHP 中的每个键和值

2024-02-24

我刚刚了解了键/值对。

我尝试寻找现有的答案,并尝试了解有关键/值对和关联数组的知识。尽管这有点太耗时了。

我很难弄清楚如何迭代这个多维关联数组而不出现任何错误。

$arr = array(
  'test1' => array(
    'testing 1-1' => array('testing 1-1-1', 'testing 1-1-2', 'testing 1-1-3'),
    'testing 1-2' => array('testing 1-2-1', 'testing 1-2-2', 'testing 1-2-3'),
    'testing 1-3' => array('testing 1-3-1', 'testing 1-3-2', 'testing 1-3-3')),
  'test2' => array(
    'testing 2-1' => array('testing 2-1-1', 'testing 2-1-2', 'testing 2-1-3'),
    'testing 2-2' => array('testing 2-2-1', 'testing 2-2-2', 'testing 2-2-3'),
    'testing 2-3' => array('testing 2-3-1', 'testing 2-3-2', 'testing 2-3-3')),
  'test3' => array(
    'testing 3-1' => array('testing 3-1-1', 'testing 3-1-2', 'testing 3-1-3'),
    'testing 3-2' => array('testing 3-2-1', 'testing 3-2-2', 'testing 3-2-3'),
    'testing 3-3' => array('testing 3-3-1', 'testing 3-3-2', 'testing 3-3-3')));

所以我知道 print_r 完美地完成了渲染整个数组的工作,但我想要实现的是能够获取每个可能的键和值。

我尝试通过 foreach 循环一一回显所有字符串,但似乎单词数组本身会以某种方式导致错误。我相信这是我最合乎逻辑的方法。

foreach ($arr as $test) {
  echo $test . '<br>';
    foreach ($test as $testing1) {
      echo '&nbsp&nbsp' . $testing1 . '<br>';
      foreach ($testing1 as $testing2) {
        echo '&nbsp&nbsp&nbsp&nbsp' . $testing2 . '<br>';
    }
  }
}

虽然它会导致以下结果:

Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 88
Array

Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
  Array
    testing 1-1-1
    testing 1-1-2
    testing 1-1-3

Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
  Array
    testing 1-2-1
    testing 1-2-2
    testing 1-2-3

Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
  Array
    testing 1-3-1
    testing 1-3-2
    testing 1-3-3

Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 88
Array

Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
  Array
    testing 2-1-1
    testing 2-1-2
    testing 2-1-3

Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
  Array
    testing 2-2-1
    testing 2-2-2
    testing 2-2-3

Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
  Array
    testing 2-3-1
    testing 2-3-2
    testing 2-3-3

Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 88
Array

Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
  Array
    testing 3-1-1
    testing 3-1-2
    testing 3-1-3

Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
  Array
    testing 3-2-1
    testing 3-2-2
    testing 3-2-3

Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
  Array
    testing 3-3-1
    testing 3-3-2
    testing 3-3-3

所以我想知道是否有我遗漏的东西或者这是不可能实现的?

更新:感谢您的回答。

这是我根据得到的答案使用的代码:

  foreach ($arr as $k => $test) {
    echo $k . '<br>';
      foreach ($test as $k1 => $testing1) {
        echo '&nbsp&nbsp' . $k1 . '<br>';
        foreach ($testing1 as $k2 => $testing2) {
          echo '&nbsp&nbsp&nbsp&nbsp' . $testing2 . '<br>';
      }
    }
  }

UPDATE:

我真的很喜欢 HoldOffHunger 的建议。

<?php

    // Your Array Here

$arr = [...];

    // IterateArray() function

function IterateArray($data) {
    if(is_array($data)) {
        foreach ($data as $data_key => $data_value) {
            print("\n\n");
            print($data_key . ' :: ');
            print(IterateArray($data_value));
        }
    } else {
        print($data);
        print("\n");
    }
}

    // Call IterateArray()

IterateArray($arr);

?>

不幸的是,我没有使用这个递归函数。对循环的每个实例进行硬编码可以让我为每个嵌套循环执行不同的操作。不过(如果我错了,请纠正我)如果多维数组的每个维度都重复相同的代码,这将很有用。


The foreach陈述 http://php.net/manual/en/control-structures.foreach.php可以选择仅迭代值(如您所做的那样)或键和值。我怀疑这就是您正在寻找的:

foreach ($arr6 as $k=>$test) {
  echo $k . '<br>';
    foreach ($test as $k1=>$testing1) {
      echo '&nbsp&nbsp' . $k1 . '<br>';
      foreach ($testing1 as $k2=>$testing2) {
        echo '&nbsp&nbsp&nbsp&nbsp' . $testing2 . '<br>';
    }
  }
}

您收到的通知是因为您正在尝试使用echo在数组上,这是不可能的。

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

迭代多维关联数组 PHP 中的每个键和值 的相关文章

  • 是否可以使用流上下文在 PHP 下使用 FTPS?

    我了解到使用ftpsPHP for Windows 下的 ftp ssl connect 很困难 您被要求进入构建自己的二进制文件以包括 Open SSL 的漫长旅程 我找到了以下建议phpseclib http phpseclib sou
  • 为什么 LinkedIn v2 Share API 在任何 v2/shares 端点上给出权限不足的错误?

    当我调用任何 v2 LinkedIn 共享 API 端点时 例如https api linkedin com v2 socialActions https api linkedin com v2 socialActions share UR
  • 简单的颜色变化

    我正在创建一个用户界面 用户可以在其中更改页面的颜色值 我想要的是获取分配给其背景颜色的值并将其变亮一定程度 我只是想获得一条亮点线 而不必每次都制作新图像 示例 用户将背景颜色设置为 ECECEC 现在我希望某个元素边框变成 F4F4F4
  • PHP 和 DOM 文档

    我有一个关于 DOMDocument 的使用和创建 XML 的问题 我有一个 PHP 程序 加载到 XML 文件中 处理XML的每个节点 行 将其发送到另一个进程 然后该进程返回一个 XML 元素 我获取节点的字符串表示形式 以便可以创建
  • 如何处理 PHP 中浮点数的奇怪舍入

    众所周知 浮点运算并不总是完全准确 但是如何处理它的不一致之处呢 As an example in PHP 5 2 9 this doesn t happen in 5 3 echo round 14 99225 4 14 9923 ech
  • 服务器响应中的“连接:保持活动状态”

    我正在尝试建立从 Silverlight 应用程序到 Apache 服务器托管的 PHP 页面的 HTTP 持久连接 即无需为每个 HTTP 请求创建新的 TCP 连接 为此 我需要网络服务器发送其 HTTP 响应 并将 Connectio
  • PHP:STR 替换为链接

    我有这个 PHP 聊天框 如果我在聊天框中键入链接 它不会将其显示为链接 我如何使用 STR 替换来执行此操作 它应该响应诸如 http http com nl www www 之类的内容 我的其他 STR 替换行如下所示 bericht
  • cakephp 1.1 与 php 5.3

    我刚刚从 php 5 1 升级到 5 3 之前在我的服务器上使用 cakephp 1 1 自从升级 或者可能更早 我不确定 以来 我收到以下错误 任何人都可以透露一些信息 Deprecated Assigning the return va
  • PHP:在多维数组中查找相同的键并合并结果

    我有一个多维数组 如下所示 array 0 gt array WS gt array id gt 2 name gt hello 1 gt array SS gt array id gt 1 name gt hello2 2 gt arra
  • Mongodb $push 嵌套数组

    我想向我的嵌套数组添加新数据 我的文档是 username erkin email email protected cdn cgi l email protection password b playlists id 58 name asd
  • MySQL:“您的 SQL 语法错误...靠近键...”? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我发现了一个非常酷的用于丢失密码的脚本 但是这一行给我带来了问题 r mysql query INSERT INTO keys u
  • 对更改运行 PHPUnit 测试

    每当磁盘上的文件发生更改时 我想运行 PHPUnit 测试 或至少其中的一个子集 与您可以使用 进行的操作非常相似 咕噜手表 https github com gruntjs grunt contrib watch blob master
  • 如何在PHP中将图像从内存上传到AWS S3?

    所以我目前有一个使用 AWS S3 上传图像的上传系统 这是代码 Upload image to S3 s3 Aws S3 S3Client factory array key gt mykey secret gt myskey try s
  • 如何在 VB.NET 中声明和初始化多维数组?

    我想做这个 Dim Numbers As Integer 1 2 3 4 5 6 7 IDE 的下划线4 5 6 7并说Array initializer has 3 too many elements 我究竟做错了什么 以下应该有效 Di
  • 打印表数据mysql php

    我在尝试打印表格的一些数据时遇到问题 我是 php mysql 的新手 但我认为我的代码是正确的 这里是 h1 Lista de usu rios h1
  • 仅在 Chrome 上我收到此错误:Uncaught TypeError: Illegal constructor [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我在 Chrome 上加载 jQuery 时 我会收到此错误 Uncaught TypeError Illegal constr
  • 如何根据另一个下拉列表中的选择动态填充下拉列表中的选项?

    我有一个表 其中包含类别信息 例如产品 我已将它们列在下拉菜单中 现在 我需要做的是 在下一个下拉菜单中列出所选类别的子类别 我希望 javascript 是必需的 但我对 javascript 还不太熟悉 将非常感谢您的帮助 你应该使用
  • Magento 中的子域 htaccess 问题

    public html www domain com public html subdomain subdomain domain com public html htaccess public html subdomain htacces
  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

    我正在实施 Google OAuth 2 0 并注意到 Google OAuth 返回的唯一用户 ID 是21位数字长的 我想大整数 20 足以满足这种需求 但我现在看到 Google OAuth 返回的用户 ID 的长度感到困惑 关于我应
  • 通过 R 中的数据子集执行计算

    我想对数据框的 PERMNO 列中的每个公司编号进行计算 其摘要可以在此处查看 gt summary companydataRETS PERMNO RET Min 10000 Min 0 971698 1st Qu 32716 1st Qu

随机推荐

  • Cold observable 的 Scheduler.CurrentThread - 它将在哪个线程中运行?

    我是 RX 的新手 开始了解一些概念 我在网上找不到的概念 我在代码中使用计时器 Observable Timer TimeSpan FromSeconds 2 schedulerProvider CurrentThread where s
  • PHP 中子类的构造函数是否必须调用parent::__construct?

    是否必须从子类构造函数中调用父类的构造函数 为了解释 请考虑以下示例 class Parent function construct something is done here class Child extends Parent fun
  • 由于用户数据脚本,AWS 自动缩放启动未就绪的实例

    我有一个运行良好的自动缩放功能 带有一个启动配置 其中我定义了一个在新实例启动时执行的用户数据脚本 用户脚本更新基本代码并生成缓存 这需要几秒钟的时间 但是 一旦实例 创建 而不是 准备就绪 自动缩放就会将其添加到负载均衡器中 这是一个问题
  • 在现有 ASP.NET WebForms 站点中添加带有根路径的第二语言支持

    我继承了一个非常小的 ASP NET WebForms 项目 我的客户希望为其添加第二种语言 对于每个 somepage aspx 我想支持它的 第二语言路径 版本 例如 fr somepage aspx 我想使用正常的全球化 两种语言的
  • github.io 阻止了 ajax 请求

    我所有带有ajax请求的应用程序都返回错误 此请求已被阻止 内容必须通过 HTTPS 提供 例如 https zzharuk github io local weather widget https zzharuk github io lo
  • 在运行时合并两个程序集 - C#

    是否可以在运行时合并两个程序集 以便在迭代 ExportedTypes 时返回两个原始程序集中的所有类型 The why 我使用数据库迁移框架来更新我的数据库 它采用由特殊类组成的单个程序集 用于定义对数据库所做的修改 我有两个非常相似的数
  • 使用 git stash 时的 sh.exe.stackdump

    我是 Git 新手 对 stash 命令有疑问 当我编写 git stash git stash list git stash apply git drop 等命令时 我总是得到一个名为 sh exe stackdump 的文件 Excep
  • 带参数的 REST GET 动词

    我正在和我的队友一起阅读一些 REST 我们正在编写一个 RoR 应用程序 它将向世界其他地方公开它的一些功能 我在这个团队的任务是制作一个公开日记报告的资源 如果你打电话 http root com journalreports http
  • 如何确保curl 使用openssl,而不是nss?

    是否可以通过配置来保证parameter http curl haxx se docs manpage html that curl uses OpenSSL http www openssl org and not NSS http ww
  • 在 codeigniter 中启用 $_GET

    我一直在试图弄清楚如何在 CI 中启用 GET 看起来框架故意破坏了 GET 数组 并且启用它需要对核心类进行认真的修改 谁能说出这是为什么 以及如何克服它 请注意 我希望保持 URI 解析和路由的方式不变 只需让 GET 也可用即可 将以
  • Django - 使用 templatetags 渲染许多模板非常慢

    假设 我有一个带有照片库的页面 每个缩略图都有例如照片 国家 地区 作者等 我使用模板标签 加载指定的模板 渲染这些项目 小部件 由于 DRY 我在页面上的不同位置单独使用这些项目 小部件 所以会这样 而且速度非常慢 我使用 django
  • 如何使按钮可重复使用?

    我对编程世界还比较陌生 我对 HTML 和 CSS 有扎实的了解 最近又学习了 JavaScript 我正在开发一系列文本生成器作为学校项目 我的目标是能够在网站上单击一个按钮 并让计算机在每次单击该按钮时吐出随机文本 然而 虽然我对 HT
  • 在 httpContextAccessor.HttpContext 上返回 null

    我们重写 SaveChangesAsync 以自动更新 DateCreated CreatedBy LastDateModified 和 LastModifiedBy 对于CreatedBy和LastModifiedBt 我们需要Ident
  • 获取 Android Google Analytics 引荐来源网址标签

    我们计划使用 Google Analytics 来跟踪通过 Android Market 到我们的应用程序的广告点击推荐 根据谷歌文档 http code google com apis analytics docs mobile andr
  • 带有自定义标头的 Resttemplate GET 请求

    我需要发送带有标头的 GET 请求 Content Type application camiant msr v2 0 xml 我期望来自服务器的 XML 响应 我用 Postman 测试了请求和响应 一切都很好 但是当我尝试在春天这样做时
  • 密码哈希 PHP 7 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我目前正在学习 PHP 并且一直在论坛中查找有关如何最好地在 PHP 中对密码进行哈希处理的最新想法 任何人都可以建议目前最好使用的密码哈希方法
  • JSON 嵌套在 POJO 中

    我有一个 POJO 类 public class D private JSONObject profileData public JSONObject getProfileData return profileData public voi
  • 如何在 Eclipse Juno 中打开 OSGi 控制台?

    eclipse console 上面的命令在不同的窗口中打开 OSGi 控制台和 Eclipse IDE 是否有任何选项可以将 OSGi 控制台引入 Eclipse 的控制台视图中 您只需选择 主机 OSGi 控制台 http archiv
  • 使用 JUnit 进行单元测试时如何处理异常?

    如果一个方法抛出异常 如何编写测试用例来验证该方法实际上抛出了预期的异常 在最新版本的 JUnit 中 它是这样工作的 import org junit Rule import org junit Test import org junit
  • 迭代多维关联数组 PHP 中的每个键和值

    我刚刚了解了键 值对 我尝试寻找现有的答案 并尝试了解有关键 值对和关联数组的知识 尽管这有点太耗时了 我很难弄清楚如何迭代这个多维关联数组而不出现任何错误 arr array test1 gt array testing 1 1 gt a