PHP:使用嵌套数组

时间:2017-04-21 14:14:41

标签: php arrays multidimensional-array associative-array

我有一个包含关联数组的多维数组,在关联数组中我有一个名为'opt'的键,其中包含一个数组。我循环遍历整个多维数组。我想让它更简化,摆脱 检查密钥是否“选择”,因为如果我有更多包含数组的密钥,那么我必须应用检查所有包含array的键。我不想这样做,并希望以更加技术的方式做。 简而言之,如何在循环遍历$ value包含数组的数组时进行检查。

$myArr=array(
    array(
        'question' => 'First Question',
        'opt' => array('A','B','c','D'),
        'ans' => '3'
    ),
    array(
        'question' => 'Second Question',
        'opt' => array('A','B','c','D'),
        'ans' => '1'
    )
);
for($i=0; $i<count($myArr); $i++)
{
    foreach ($myArr[$i] as $key => $value) {
        if ($key!='opt') {
            echo $value . "<br/>";
        }
        else{
            for($ii=0; $ii<count($value); $ii++)
            {
                echo $value[$ii] . "<br />";
            }
        }
    }
}

3 个答案:

答案 0 :(得分:0)

您可以使用递归函数并使用GameObject pyramidFace1; ... pyramidFace1.GetComponent<MeshRenderer>().material = materials[buttonIndex]; ... 显示任何内容,如下所示:

foreach

这样称呼:

function display_array($arr){
    if(gettype($arr) == 'array'){
        foreach($arr as $v){
            display_array($v);
        }
    }else{
        echo $arr . '<br>';
    }
}

输出与您的代码相同。请查看here

答案 1 :(得分:0)

取决于您所需的输出...&#34;打印的最简单方法&#34;这个数组以一种很好的格式化方式是:

echo "<pre>";
print_r($arr);
echo "</pre>";

这可能无法为用户提供演示文稿,但如果只是为了观看&#34;结果你自己,它完全没问题。

答案 2 :(得分:0)

使用以下类可以轻松打印嵌套数组。它以递归方式运行,因此无论有多少嵌套数组,有多少层都无所谓。

<?php

class Debug
{
    public static function errorLog($text)
    {
        $lines = Debug::arrayToTextLines($text);
        foreach ($lines as $value) {
            error_log($value);
        }
    }

    public static function echo($text)
    {
        $lines = Debug::arrayToTextLines($text);
        foreach ($lines as $value) {
            echo $value;
        }
    }

    public static function arrayToTextLines($array, $nestLevel = 0)
    {
        $resultLines = array();
        $margin = "";
        for ($i = 0; $i < $nestLevel; $i++) {
            $margin = "  " . $margin;
        }

        if (gettype($array) == 'array') {
            foreach ($array as $key => $value) {
                $subValues = Debug::arrayToTextLines($value, $nestLevel + 1);
                if (count($subValues) > 1) {
                    $resultLines[] = $margin . $key . " => ";
                    $resultLines = array_merge($resultLines, $subValues);
                } else {
                    $resultLines[] = $margin . $key . " => " . $value;
                }
            }
        } else {
            $resultLines[] = $margin . $array;
        }

        return $resultLines;
    }
}
相关问题