大家好,我只是想知道如何使用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
答案 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