Foreach以Array Array的形式返回

时间:2017-08-14 17:48:53

标签: php arrays foreach

我不确定自己错误地使用了这个错误,但是当我尝试使用变量执行foreach循环时,它会返回Array Array

PHP代码:

  <?php foreach ($thing as $t) : ?>
    <?php $thisStuff = $t[stuff];  ?>
    <?php echo $thisStuff; ?>
  <?php endforeach; ?>

输出: Array Array

这可能是$thisStuff中还有另一个数组吗?如果是这样,我会遍历那些数据吗?

2 个答案:

答案 0 :(得分:1)

如果你有一个多维数组,你需要使用递归函数。

一个例子可能是这个

           <md-content class="md-padding">
                <md-tabs md-selected=0>
                    <md-tab id="tab1" label="one" md-active="true" md-no-select-click="true">
                        <md-tab-label>Item One</md-tab-label>
                        <md-tab-body>
                            View for Item #1 <br/>
                            data.selectedIndex = 1;
                        </md-tab-body>
                    </md-tab>
                    <md-tab id="tab2" label="two" md-no-select-click="true" md-active="false">
                        <md-tab-label>Item Two</md-tab-label>
                        <md-tab-body>
                            View for Item #2 <br/>
                            data.selectedIndex = 2;
                        </md-tab-body>
                    </md-tab>
                    <md-tab id="tab3" label="three" md-no-select-click="true" md-active="false">
                        <md-tab-label>Item three</md-tab-label>
                        <md-tab-body>
                            View for Item #3 <br/>
                            data.selectedIndex = 3;
                        </md-tab-body>
                    </md-tab>
                    <md-tab id="tab4" label="four" md-no-select-click="true" md-active="false">
                        <md-tab-label>Item three</md-tab-label>
                        <md-tab-body>
                            View for Item #3 <br/>
                            data.selectedIndex = 3;
                        </md-tab-body>
                    </md-tab>
                    <md-tab id="tab5" label="five" md-no-select-click="true" md-active="false">
                        <md-tab-label>Item three</md-tab-label>
                        <md-tab-body>
                            View for Item #3 <br/>
                            data.selectedIndex = 3;
                        </md-tab-body>
                    </md-tab>
                </md-tabs>
            </md-content>  

上面的函数,给出一个类似

的数组
function unfoldArray($array,$output = array()) {
    if(is_object($array)) {
        $array = (array)$array;
    }
    foreach($array as $key => $value) {
        if(is_array($value) || is_object($value)) {
            //$output[] = $key;
            $output = unfoldArray($value,$output);
        } else {
            $output[] = $value;
        }
    }
    return $output;
}

将返回像这样的平面数组

$array = array(
    "one",
    "two",
    "three" => array("A","B","C"),
    "four" => array("X","Y","Z"),
    "five",
    "six" => array(
        "sub_one",
        "sub_two",
        "sub_three" => array("sub_A","sub_B","sub_C")
    ),
    "seven"
);
$output = unfoldArray($array);

您可能会注意到结果数组中省略了值“three”和“six”,因为它们是键,但如果您要包含它们,只需取消注释// $ output [] = $ key;在功能中。

一旦你拥有了这个数组,你就可以用foreach循环。 这可能不是您所需要的,但应该给您一个指导方向。

答案 1 :(得分:0)

尝试使用key =&gt;价值方法:

  <?php foreach ($thing as $key => $value) : ?>
    // if $value is array, you need to iterate it the same way (additional foreach)
    <?php echo $value; ?>
  <?php endforeach; ?>