当前位置: 首页 > 面试题库 >

PHP foreach与嵌套数组?

姬熙云
2023-03-14
问题内容

我有一个嵌套的数组,我想在其中显示结果的子集。例如,在下面的数组中,我想遍历嵌套array [1]中的所有值。

数组
(
  [0] =>数组
    (
      [0] =>一
      [1] =>数组
        (
          [0] => 1
          [1] => 2
          [2] => 3
        )
    )

  [1] =>数组
    (
      [0] =>两个
      [1] =>数组
        (
          [0] => 4
          [1] => 5
          [2] => 6
        )
    )

  [2] =>数组
    (
      [0] =>三个
      [1] =>数组
        (
          [0] => 7
          [1] => 8
          [2] => 9
        )
    )
)

我试图使用foreach函数,但似乎无法正常工作。这是我的原始语法(尽管我意识到这是错误的)。

$ tmpArray = array(array(“ one”,array(1,2,3)),array(“ two”,array(4,5,6)),array(“ three”,array(7,8,9 )));

foreach($ tmpArray [1] as $ value){
  echo $ value;
}

我试图避免对键是否与我要搜索的键相同的变量进行比较,即

foreach($ tmpArray as $ key => $ value){
  如果($ key == 1){
    echo $ value;
  }
}

有任何想法吗?


问题答案:

如果您知道嵌套数组中的级别数,则可以简单地执行嵌套循环。像这样:

//  Scan through outer loop
foreach ($tmpArray as $innerArray) {
    //  Check type
    if (is_array($innerArray)){
        //  Scan through inner loop
        foreach ($innerArray as $value) {
            echo $value;
        }
    }else{
        // one, two, three
        echo $innerArray;
    }
}

如果您不知道数组的深度,则需要使用递归。请参见下面的示例:

//  Multi-dementional Source Array
$tmpArray = array(
    array("one", array(1, 2, 3)),
    array("two", array(4, 5, 6)),
    array("three", array(
            7,
            8,
            array("four", 9, 10)
    ))
);

//  Output array
displayArrayRecursively($tmpArray);

/**
 * Recursive function to display members of array with indentation
 *
 * @param array $arr Array to process
 * @param string $indent indentation string
 */
function displayArrayRecursively($arr, $indent='') {
    if ($arr) {
        foreach ($arr as $value) {
            if (is_array($value)) {
                //
                displayArrayRecursively($value, $indent . '--');
            } else {
                //  Output
                echo "$indent $value \n";
            }
        }
    }
}

下面的代码仅显示嵌套数组,其中包含适用于您特定情况的值(仅限第3级)

$tmpArray = array(
    array("one", array(1, 2, 3)),
    array("two", array(4, 5, 6)),
    array("three", array(7, 8, 9))
);

//  Scan through outer loop
foreach ($tmpArray as $inner) {

    //  Check type
    if (is_array($inner)) {
        //  Scan through inner loop
        foreach ($inner[1] as $value) {
           echo "$value \n";
        }
    }
}


 类似资料:
  • 你一定看过下面的功能(在facebook上),一个有一些评论的帖子,每个评论都有一个类似的计数器。 https://img4.hostingpics.net/pics/67853820170616003640LaravelNewsAccueil.png 在拉雷维尔,这将是类似的 帖子有很多评论 以下评论发布 类似于用户的评论 CommentLike belong评论 评论有很多类似的评论 所以,现

  • 我的问题是关于在为API目的构建URL时嵌套资源的优势。请考虑以下两种访问员工资源的备选方案: 现在考虑开发一个通用库以从API访问REST资源的任务。如果所有路由都是平坦的,这样的REST包装库只需要知道要访问的资源的名称: 但是,如果我们要支持嵌套路由,这个包装器将需要知道关于嵌套了哪些模型以及在哪个其他资源下的额外信息,以便知道如何构建引用这样一个模型的URL。考虑到并非所有模型都嵌套在同一

  • 问题内容: 我有一个从数据库(JSON MySQL中的数据存储)检索数据的程序。 我设法得到对象。输出为: JSON对象: 我需要有关如何处理数据并将信息放入不同数组/对象的建议。例如 谢谢。 问题答案: 您可以使用Jackson Api来实现。 您必须创建与json对象相同的Pojo类(该类应具有“ attributes”,“ uuid”之类的成员)。 这是您必须使用的类 和代码 现在,您可以使

  • 4.3 嵌套组合与扩展 VimL 虽然只提供了列表与字典两种数据结构,但通过列表与字典的合理组合,几乎能表 达任意复杂的数据结构。这与许多其他流行的脚本语言(如 python)的思想如出一辙。 本节就讨论在 VimL 中如何用列表与字典表示常用数据结构。 堆栈与队列 堆栈是所谓先进后出的结构,队列是先进先出的结构。这可以直接用一个 list 表示, 因为 list 相当于个动态数组,支持随意在两端

  • 我正在尝试使用“psycopg2”从postgres获取JSON行。记录的值类似于[[{….},{...},{...}] ]. 要获得正确的JSON结果,请执行以下操作:[{…},{...},{...}] 我得去录音。不知道为什么会这样。

  • 嗨,我是ReactJS平台的学生开发者。我以前在render方法中使用过类组件,但现在我学习了钩子和函数组件对它的重要性,就像每个Reactjs开发人员所知道的那样。我在使用嵌套组件时遇到问题,我面临如下错误: index.js:1警告:函数作为React子函数无效。如果返回组件而不是从渲染返回组件,可能会发生这种情况。或者你想调用这个函数而不是返回它 你能帮我解决这个问题吗?如何在返回部分有效地