-3

これで、echo を使用して配列の内容を出力することはできず、foreach を使用する必要があることを理解しましたが、何らかの理由でこれが機能していません。何か案は?

$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

6 に答える 6

4

を使用して PDO から何かを取得したようですfetchAll

このメソッドは、配列 (行) の配列を返します。内側の配列には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";
    }
}

プロのヒント: 括弧の配置に注意してください。これは正確さには関係ありませんが、コードが読みやすくなります :)

于 2012-07-12T01:53:30.647 に答える
1

私には多次元配列のように見えます。試してみるvar_dumpprint_r

var_dump($rows);
print_r($rows);
于 2012-07-12T01:47:22.657 に答える
1

$row は、文字列に直接変換できない別の配列です。この関数を使用して、配列の内容を確認できます。

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());
于 2012-07-12T01:50:24.193 に答える
0
//<pre> tag will give you a well formatted version of var_dump  
echo "<pre>"; 
var_dump($rows);
echo "</pre>";
于 2012-07-12T01:47:28.637 に答える
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()などの関数を使用することが重要です。これらは多くの問題を防ぎます。

于 2012-07-12T01:51:29.257 に答える