2011-05-07 49 views
1

我已經創建了應該返回錯誤的陣列來驗證形式的函數。我試圖通過幾種方法來實現這一點,但是我遇到的問題是我似乎無法顯示錯誤消息。如何顯示每個數組元素的值?

我已經試過

for ($i = 0; $i < count($errors); $i++) 
{ 
    echo ($errors[$i]); 
} 

foreach($errors as $err) 
{ 
    echo($err); 
} 

這兩個似乎給了我同樣的結果: 「ArrayArray」。

如果我使用var_dump()。它只表示數組有值。

我覺得這有一個非常簡單的解決辦法,但我一直在尋找了好一陣子,並試圖修改這個反正我能想到的沒有結果。我錯過了什麼?

回答

2

您有一個多維數組。假設你有2d陣列。 -

foreach($errors as $err) 
{ 
    foreach($err as $err2) 
     echo($err2); 
} 

或老式

foreach($errors as $i => $err) 
{ 
    foreach($err as $errKey => $errVal) 
     echo($errVal); 
} 
+0

舊風格是什麼意思? – Ikke 2011-05-07 06:20:22

+0

第二個被用了很多,直到PHP來了一個簡短的方法,這是第一個版本。他們都這樣做,但有時舊風格更清晰。 – robx 2011-05-07 06:24:22

+0

我看到的唯一區別是,您也只是將鍵而不是僅指定值。這取決於在決定使用哪個變體時您是否還需要鑰匙。 – Ikke 2011-05-07 07:44:49

1

您可以使用print_r($errors);。適用於數組,對象等

@comment 望着眼前的print_r顯示您的表的定義是很奇怪的。要列出您需要的錯誤信息:

foreach($errors[2] as $err) 
    echo $err."<br />"; 
+0

我已經試過這也和它仍然沒有隻顯示錯誤消息。 @David加入了你的建議,我在下面評論了print_r()的輸出結果。 – 2011-05-07 17:21:04

0
function displayErrors($errors) 
{ 
    if(is_array($errors)){ 
    foreach($errors as $error) 
    { 
     displayErrors($error); 
    } 
    } 
    else{ 
     echo($errors); 
    } 
} 
0

的除了由@piotrm建議你,如果你換你print_r()呼叫<pre>...</pre>標籤得到很好的可讀的輸出:

<pre> 
<?php print_r($errors); ?> 
</pre> 

這至少是最簡單的解決方案!

+0

我試圖 '回聲 「

"; echo print_r("$errors"); echo "
」;' 但它只是顯示 '陣列 ( [0] =>數組 ( ) [1] => [2] =>數組 ( [0] =>數組 ( ) [1] => [2] =>請輸入您的名字。 [3] =>請輸入您的姓氏。 [4] =>請輸入一個有效的電子郵件地址。 [5] =>請輸入用戶名稱。 [6] =>請輸入一個有效的用戶名。 [7] =>密碼長度必須至少爲4個字符。 ) ) '。 – 2011-05-07 17:18:55

+0

@Kevin - 你的環境的本質是什麼?如果你在使用'pre'標籤時沒有獲得線路返回,那麼肯定會有些奇怪的東西,我猜想。至少不需要使用'print_r'作爲'echo'。您還可以查看[print_r']的PHP手冊(http://www.php.net/manual/en/function.print-r.php),其中許多[用戶貢獻的評論](http:///www.php.net/manual/en/function.print-r.php#87418)也具有'pre'標籤。如果你正在尋找一些非常時髦的東西,那還有[Krumo](http://krumo.sourceforge.net/)。希望有所幫助! – 2011-05-08 06:32:19

+0

另外 - 不需要圍繞數組變量的引號:只是:'print_r($ errors);'。 – 2011-05-08 06:40:28

相關問題