2013-08-25 30 views
2

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

使用數組可能會幫助 – OneOfOne

+0

的輸出是什麼你想達到什麼目的? – Cfreak

+0

只是在做內部foreach循環之前測試它是否是一個數組。 – fabien

回答

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; 
     } 
    } 
} 
+0

謝謝你解決我的問題! :) 謝謝馬克! ;) –

0

並非所有$工作,$ a的值names_jobs,是數組。這就是你得到的方式

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

在第一次通過,但在第二次通過中獲取警告,其中$ job不是數組。

現在我明白了上面的答案(通過@MarkResølved)給出了可靠的修改代碼。

0

我不明白你爲什麼設置你的數組結構像這樣。

但給你一個答案你的問題:你正在走陣列期待陣列的每個部分是另一個陣列,只有你的數組中的第一個條目是一個。 Joana和Chloe是正常的字符串,因此試圖將它們當作arry來引起錯誤。

您可以使用is_array()來檢查對象或變量是否爲數組,而不是像需要那樣對待它。

問候Solick

+0

謝謝你Solick! :) –

+0

你不客氣。 – solick

相關問題