如何回显数组中的数组?

时间:2013-08-25 06:05:57

标签: php arrays foreach

大家好,我只是想知道如何使用foreach打印出一组数组?这是我的简单代码。

<?php

function names_job() {

    $names = array();

    $names['lester'] = array('web developer' => 'name1', 'web designer' => 'name2', 'eating' => 'name2');
    $names['joanna'] = 'web designer';
    $names ['chloe'] = 'student';

    return $names;
}

function display_arr() {

    $names_jobs = names_job();

    foreach( $names_jobs as $name => $job ) {
        echo '<br>Name: ' . $name . ' Job: ' . $job . '<br>';

        foreach( $job as $jobs => $boss ) {
            echo '<br>-- ' . $jobs . ' ' . $boss . '<br>';
        }
    }
}
display_arr();

?>

以上代码的结果如下:

Name: lester Job: Array
web developer name1
web designer name2
eating name2
Name: joanna Job: web designer

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\code\index.php on line 21
Name: chloe Job: student

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\code\index.php on line 21

3 个答案:

答案 0 :(得分:4)

在尝试迭代之前,您需要检查$job是否为数组。 这也会阻止它以字符串形式输出("Array")。

您可以使用PHP is_array()函数: http://php.net/manual/de/function.is-array.php

function display_arr() {

    $names_jobs = names_job();

    foreach( $names_jobs as $name => $job ) {
        echo '<br>Name: ' . $name;

        if( is_array( $job ){
            foreach( $job as $jobs => $boss ) {
                echo '<br>-- ' . $jobs . ' ' . $boss . '<br>';
            }
        }
        else{
            echo ' Job: ' . $job;
        }
    }
}

答案 1 :(得分:0)

并非所有$ job,$ names_jobs的值都是数组。这是你得到的方式

Name: lester Job: Array
web developer name1
web designer name2
eating name2
在第一遍中

,但在第二遍中得到警告,其中$ job不是数组。

现在我意识到上面的答案(由@MarkResølved提供)已经给出了可靠的修改代码。

答案 2 :(得分:0)

我不明白为什么你这样设置了数组的结构。

但是给你一个问题的答案:你正在走一个数组,希望数组的每个部分都是另一个arry,你的数组中只有第一个条目是一个。 Joana和Chloe是正常的字符串,因此试图将它们视为arry会导致错误。

您可以使用is_array()来检查对象或变量是否为数组,而不是像需要那样对待它。

关心Solick