2012-07-12 115 views
-3

現在我明白了你不能使用echo打印數組的內容,並且必須使用foreach,但出於某種原因,這不起作用。有任何想法嗎?在php中打印陣列

$rows = $stmt->fetchAll(); 
foreach ($rows as $key=>$row) 
     { 
     echo "My value at $key is $row"; 
     } 
} 

輸出:

My value at 0 is ArrayMy value at 1 is ArrayMy value at 2 is Array 
+4

你'$ row'是另一個數組,讓您擁有一個多維數組,你需要做的另一個的foreach() – 2012-07-12 01:46:33

+1

出了什麼問題'var_dump'? – Hamish 2012-07-12 01:46:41

+0

如果你像Harnish說的那樣做了一個數組轉儲,那麼你會知道它是一個2d數組。 – 2012-07-12 04:33:47

回答

4

看來你已經使用fetchAll從PDO獲取了一些東西。

此方法返回數組(行)的數組。內部陣列有column_name => value元素。因此,例如,如果您檢索了「firstName」和「lastName」列,則第一條記錄的這些值分別爲$rows[0]['firstName']$rows[0]['lastName']

正確的方式做,這將是:

$rows = $stmt->fetchAll(); 
foreach ($rows as $key => $row) { 
    foreach ($row as $column => $value) { 
     echo "My $column value for row $key is $value\n"; 
    } 
} 

普羅蒂普:觀看括號對齊,這沒有關係的正確性,但使代碼更易讀:)

+0

謝謝先生。我認爲它會更像python。 – 2012-07-12 02:02:21

0
//<pre> tag will give you a well formatted version of var_dump 
echo "<pre>"; 
var_dump($rows); 
echo "</pre>"; 
1

$行是另一種陣列,其不能被直接轉換爲字符串。您可以使用此功能來檢查數組內容。

function d($data) 
{ 
    echo '<pre>'; 
    print_r($data); 
    echo '</pre>'; 
} 
d($stmt->fetchAll()); 

,更好地這樣做(如果你忘了刪除其調用不會傷害你的網站)

define('ENVIRONMENT', 'development'); 
function d($data) 
{ 
    if(ENVIRONMENT == 'development') 
    { 
    echo '<pre>'; 
    print_r($data); 
    echo '</pre>'; 
    } 
} 
d($stmt->fetchAll()); 
0

試試這個調試的$row內容:

$rows = $stmt->fetchAll(); 

foreach ($rows as $key=>$row) 
{ 
    echo "First key: $key | "; 

    foreach($row as $subkey => $subrow) 
    { 
     echo "Subkey: $subkey | Value: $subrow <br />"; 
    } 

} 

另外,使用var_dump()print_r()var_export()等功能非常重要,它們將爲您預防很多問題。

0
//@parram $data-array,$d-if true then die by default it is false 
//@author Your name 

function p($data,$d = false){ 

    echo "<pre>"; 
     print_r($data); 
    echo "</pre>"; 

    if($d == TRUE){ 
     die(); 
    } 
} // END OF FUNCTION 

使用這個函數每次當你需要字符串或數組時它會變得很棒。 有2 Patameters 1 $的數據 - 它可以是數組或字符串 2. $ d - 默認爲false,但如果設置爲true,那麼它會執行die()函數

在你的情況可以寫這樣的..

$rows = $stmt->fetchAll(); 

foreach ($rows as $key=>$row) { 
     p($rows); // to use p function use above code for p() in your code 
}