PHP的foreach使用嵌套阵? [英] PHP foreach with Nested Array?

查看:99
本文介绍了PHP的foreach使用嵌套阵?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有我想要显示结果的子集嵌套数组。例如,在阵列上下面我通过在嵌套数组的所有值要循环[1]

I have a nested array in which I want to display a subset of results. For example, on the array below I want to loop through all the values in nested array[1].


Array
(
  [0] => Array
    (
      [0] => one
      [1] => Array
        (
          [0] => 1
          [1] => 2
          [2] => 3
        )
    )

  [1] => Array
    (
      [0] => two
      [1] => Array
        (
          [0] => 4
          [1] => 5
          [2] => 6
        )
    )

  [2] => Array
    (
      [0] => three
      [1] => Array
        (
          [0] => 7
          [1] => 8
          [2] => 9
        )
    )
)

我尝试使用foreach功能,但我似乎无法得到这个工作。这是我原来的语法(虽然我知道这是错的)。

I was trying to use the foreach function but I cannot seem to get this to work. This was my original syntax (though I realise it is wrong).


$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;
}

我试图避免的密钥是否相同,我想搜索的关键,即一个变量进行比较。

I was trying to avoid a variable compare on whether the key is the same as the key I want to search, i.e.


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

任何想法?

推荐答案

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

If you know the number of levels in nested arrays you can simply do nested loops. Like so:

//  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;
    }
}

如果你不知道数组,你需要使用递归的深度。见下面的例子:

if you do not know the depth of array you need to use recursion. See example below:

//  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";
            }
        }
    }
}


在code下面只显示嵌套数组与您的具体情况的值(第三级只)


The code below with display only nested array with values for your specific case (3rd level only)

$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";
        }
    }
}

这篇关于PHP的foreach使用嵌套阵?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆