如何取消设置嵌套 foreach 中的每个数组?

2024-03-30

我有一段多维数组输出,如下所示:

    Array
(
    [0] => Array
        (
            [item] => null
            [count] => 0
            [child] => Array
                (
                    [Dagadu Bocah] => Array
                        (
                            [item] => Dagadu Bocah
                            [count] => 47
                            [child] => Array
                                (
                                    [HirukPikuk] => Array
                                        (
                                            [item] => HirukPikuk
                                            [count] => 5
                                            [child] => Array
                                                (
                                                    [DGD] => Array
                                                        (
                                                            [item] => DGD
                                                            [count] => 1
                                                            [child] => 
                                                        )

                                                )

                                        )

在我的期望中,我可以使用unsetforeach 循环中的函数删除每个具有 3 个键的数组,即“item”、“count”和“child”,以便生成如下数组:

      Array
(
    [0] => ([Dagadu Bocah] =>Array([HirukPikuk] =>Array([DGD])

                                        )

这是我的代码,不符合我的期望:

    public function conditionalPatternBase($a){
{  
  foreach($a as $key => $value){
    foreach($value['child'] as $key1 => $value1){
        if(is_array($value1['child'])){
          foreach($value1['child'] as $value2){
            unset($value2);
            if(is_array($value2['child'])){
              foreach($value2['child'] as $value3){
                unset($value3);
                if(is_array($value3['child'])){
                  foreach($value3['child'] as $value4){
                    unset($value4);
                    if(is_array($value4['child'])){
                      foreach($value4['child'] as $value5){
                        unset($value5);
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }

}

有人可以帮忙吗?


对于您想要使用的那种数据递归 https://en.wikipedia.org/wiki/Recursion_(computer_science), 像这样:

<?php
function getChildKey(array $data)
{
    $result = [];

    if (isset($data['child'])) {
        foreach ($data['child'] as $key => $value) {
            $result[$key] = getChildKey($value);
        }
    }

    if (empty($result)) {
        return '';
    }

    return $result;
}

$input = [
    [
        'item'  => null,
        'count' => 0,
        'child' => [
            'Dagadu Bocah' => [
                'item'  => 'Dagadu Bocah',
                'count' => 47,
                'child' => [
                    'HirukPikuk' => [
                        'item'  => 'HirukPikuk',
                        'count' => 5,
                        'child' => [
                            'DGD' => [
                                'item'  => 'DGD',
                                'count' => 1,
                                'child' => null,
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],
];

$output = [];
print_r($input);

foreach ($input as $index => $child) {
    $output[$index] = getChildKey($child);
}

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

如何取消设置嵌套 foreach 中的每个数组? 的相关文章

随机推荐

  • 使用 TFS 标签(例如 SourceSafe 标签)

    我们有一个相当标准的发布程序 使用 Visual Source Safe 在发布之前标记构建 这允许我们在出现任何问题时从该标签中获取数据 并在需要更改时使用它进行分支 我们有几个不同的项目 并且总是使用构建版本号进行标记 例如 V1 0
  • KnockoutJS JQuery 组合框绑定

    我想为淘汰赛制作一个绑定 它使用JQuery 自动完成组合框 http jqueryui com demos autocomplete combobox并允许 2 路绑定 http jsfiddle net rniemeyer PPsRC
  • Redux createStore() 已弃用 - 无法在 Redux 操作中从 getState() 获取状态

    So the createStore Redux 现已弃用 并且configureStore 推荐自 reduxjs 工具包 https redux toolkit js org 我很确定这与无法获得有关userInfo状态使用getSta
  • RxAndroid按钮点击观察者?

    各位程序员大家好 我使用 RxAndroid 在按下按钮时每 3 秒进行一次间隔 API 调用 private final CompositeDisposable disposables new CompositeDisposable Ob
  • Java 中的 XML 语法验证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我一直在试图弄清楚如何检查 XML 文件的语法 确保所有标签都已关闭 没有随机字符等 此时我关心的是确保文件中没有损坏的 XML文件 我一
  • 以编程方式删除标准 UITableView 中的栏

    有谁知道是否可以在代码中从 UITableView 中删除顶栏 那么在这种情况下 删除 书籍 栏吗 self navigationController setNavigationBarHidden YES
  • Powershell Get-ChildItem -Filter 的操作方式与具有相同值的Where 子句不同

    我的服务器上有一个名为 MyFolder 的文件夹 还有其他文件夹称为 MyFolder 1 MyFolder 2 MyFolder 3 等 如果我运行 gci C Sample Name like MyFolder 我得到预期的输出 Di
  • 可以在透明背景PNG图像上创建CSS阴影吗?

    有人知道是否可以在透明背景 PNG 图像上创建基于 css 的阴影 也许使用 CSS3 jquery 或者最后是服务器端 我想要实现的效果示例 非常确定是否可能它不会跨浏览器 但如果它性能良好 愿意应用吗 请随意添加您的意见 开放技术讨论
  • 在struts 2对话框中显示错误消息?

    我在 Struts 2 中有一个登录表单 其中包含用户名和密码字段 我想要的是当用户提交表单时 如果它不是有效用户 我想在对话框中显示错误消息 而不是在登录表单本身中显示错误消息 struts 2 中是否有可用的标签 或者有 人可以向我指出
  • Play Framework——向类路径添加新目录

    我希望能够有一个单独的目录 可以将代表插件的 jar 文件添加到 Play 2 0 项目中 Jar 文件通常保存在 Play 中的 lib 目录下 我想将我的 jar 放在一个名为 plugins 的目录中 这个问题之前被问过 但建议是只使
  • 在 Java 和 C# 中计算 SHA-1 哈希值

    在 Java 和 C 中计算 SHA 1 哈希值 我正在尝试在 C 应用程序中复制 Java 应用程序的逻辑 其中一部分涉及生成密码的 SHA 1 哈希值 不幸的是我无法从 Java 和 C 获得相同的结果 C Output 64 0a b
  • NotImplementedError:frozendict 不支持“更新” - Odoo v8

    我的 Odoo v8 模块上有以下代码 api multi def button generate wh doc self context self context partner self env res partner res for
  • 使用多个 log4net 文件记录器

    我有文件附加器 FileA FileB 和 FileC 我将 FileA 添加到根元素 因为我希望它成为一个包罗万象的元素 下面将详细介绍 我将 FileB 和 FileC 用于特定消息 并为每个附加程序创建命名记录器 在代码中 我加载用于
  • 为什么使用预编译头(C/C++)?

    为什么要使用预编译头 读了这些回复 我怀疑我对它们所做的事情有点愚蠢 pragma once Defines used for production versions ifndef PRODUCTION define eMsg x x Sh
  • 找不到 microsoft.sqlserver.batchparser.dll

    我编写了一个 asp net Web 应用程序 它使用 SMO 针对 SQL Server 2008 来运行一些数据库脚本 它引用这些程序集 位于 C Program Files Microsoft SQL Server 100 SDK A
  • qt5中MainWindow是用自身初始化的吗?

    我尝试学习 qt 5 但不明白一件事 Qt Creator 默认创建这两个文件 主窗口 h ifndef MAINWINDOW H define MAINWINDOW H include
  • 在 Laravel 迁移中向现有表添加新列

    我想在现有表中添加一些新列users在拉拉维尔 我已经用谷歌搜索了这一点 并在这些搜索之后我已经使用命令创建了迁移php artisan make migration add columns to users add columns to
  • 为什么 Swing 线程模型被认为是错误的?应该如何理解? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我多次听说 Java Swing 线
  • 使用图像映射创建不规则形状的 HTML 链接?

    我必须创建这种奇怪的蜂窝式导航 理想情况下 当用户悬停在每个 蜂窝 上时 它会改变颜色 也许是透明的橙色覆盖物或其他东西 我做了一个有点工作的 JS Fiddle 但不知道如何突出显示悬停时的形状 我已经很长时间没有看到使用图像映射了 但这
  • 如何取消设置嵌套 foreach 中的每个数组?

    我有一段多维数组输出 如下所示 Array 0 gt Array item gt null count gt 0 child gt Array Dagadu Bocah gt Array item gt Dagadu Bocah count