noa*_*gel 37 php arrays foreach nested
我有一个嵌套数组,我想在其中显示结果的子集.例如,在下面的数组中,我想循环遍历嵌套数组[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函数,但我似乎无法让它工作.这是我的原始语法(虽然我意识到这是错误的).
$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) {
if ($key == 1) {
echo $value;
}
}
有任何想法吗?
Ale*_*lex 62
如果您知道嵌套数组中的级别数,则可以简单地执行嵌套循环.像这样:
// 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;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不知道数组的深度,则需要使用递归.见下面的例子:
// 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";
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
下面的代码只显示嵌套数组,其中包含特定情况的值(仅限第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";
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
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;
}
}
Run Code Online (Sandbox Code Playgroud)