输出带有键和值的多维数组

时间:2016-01-18 15:27:01

标签: php arrays loops foreach

我有一个数组($ myarray),我尝试使用它的键和值输出foreach循环中的每个元素,但我不知道如何。以下数组是已解析的.ini文件的结果。这是print_r($myarray);

的输出
Array
(
    [Array1] => Array ( [A] => Test [B] => 123 )
    [Array2] => Array ( [C] => Test [D] => 123 )
    [Array3] => Array ( [E] => Test [F] => 123 )
)

我试过这样:

foreach ($myarray as $x)
{
    echo "<p>".$x." ";

    foreach($x as $key => $value)
    {
        echo $key." = ".$value . ";";

    }
    echo "</p>";
}

我期待这样的事情:

Array1:  A = Test; B = 123
Array2:  C = Test; D = 123
Array3:  E = Test; F = 123

但不幸的是我没有输出。我明显误解了一些事情。

3 个答案:

答案 0 :(得分:4)

你的代码似乎工作得差不多只是区别在于你没有为主数组定义键/值对,所以你期望从数组中获取一个键()将返回$ x作为数组( )或输出时没有任何内容

    $myarray = array(
            "Array1" =>array("A" => "Test", "B" => 123),
            "Array2" =>array("C" => "Test", "D" => 123),
            "Array3" =>array("E" => "Test", "F" => 123)
            );
foreach ($myarray as $masterkey => $mastervalue)
{
    echo "<p>".$masterkey." ";

    foreach($mastervalue as $key => $value)
    {
        echo $key." = ".$value . ";";

    }
    echo "</p>";
}

这是我使用的示例代码(基于你的代码)

输出

Array1 A = Test;B = 123;

Array2 C = Test;D = 123;

Array3 E = Test;F = 123;

答案 1 :(得分:2)

您的内部foreach是正确的,因为您通过$key => $value语法将键和值分配给变量。你需要在外循环中做同样的事情:

foreach ($myarray as $x => $y)
{
    echo "<p>".$x." ";

    foreach($y as $key => $value)
    {
        echo $key." = ".$value . ";";

    }
    echo "</p>";
}

答案 2 :(得分:1)

或者你可以使用:

float: left;

或者

echo '<pre>';
echo print_r($myarray, true); // this will return the output, not echo it
echo '</pre>';

或写一个递归函数:

echo '<pre>';
print_r($myarray); // this echo it, but after <pre> and before </pre>
echo '</pre>';

并回应它:

function output_myarray($myarray) {
    $output = array();

    foreach($myarray as $key => $value) {
        if(is_array($value)) {
            $output[] = output_myarray($value);
        } else {
            $output[] = '<p>' . $key . ' = ' . $value . ';';
        }
    }

    return $output;
}

甚至更简单:

echo '<pre>';
echo print_r(output_myarray($myarray), true);
echo '</pre>';

或者换行:

echo implode('', output_myarray($myarray), true);