0

次のコードがあります。

$res = $db->getArticles($db);
$hey = print_r($res, TRUE);
echo $hey['0'];

のコードは次の$db->getArticlesとおりです。

public function getArticles() {
    $array = array();
    try {
        $sth = $this->db->prepare("SELECT * FROM posts ORDER BY id");
        $sth->execute();
        foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $row) {
            $array[] = $row;
        }
        return $array;
    } catch (Exception $e) {

    }
}

ロジックは、関数がデータベースにクエリを実行し、すべてを配列に入れるというものです。テーブル内の行数は常にかなり少ないため、パフォーマンスは問題になりません。

以下は、上記の最初のコード スニペットの出力です。

echo $hey['0']; // prints "A" (without the quotes).
echo $hey['1']; // prints "r"
echo $hey['2']; // prints "r"
echo $hey['3']; // prints "a"
echo $hey['4']; // prints "y"

ご覧のとおり、「Array」という単語が綴られています。

echo $hey以下を出力します。

Array ( [0] => Array ( [id] => 1 [author] => 0 [content] => This Is a Test [publication_date] => 1380380992 ) )

私の最終目標は、個々の値を変数に格納し、それを使って何かをすることです。これはすべて、配列で実行される for ループ内で発生するため、各行から情報を取得できます。

私は何を間違っていますか?

4

2 に答える 2

1
$hey = print_r($res, TRUE);

これは配列の情報を与える文字列を返します$res。エコーすると、表示されているものと同じものprint_r($res);が表示されるはずです。$resは既にクエリ データの配列であるため、それをループします。

foreach($res as $row) {  //row loop
  foreach($row as $col) {  //column loop
    //do something
  }
}
于 2013-09-30T14:53:22.237 に答える
0
$array = array( array( ID => 1, 
                  author => 0,
                  content => "This Is a Test",
          publication_date => 1380380992
                )
         );



echo $array['0']['author'];

これは私のために働く...

エコーecho $array['0']['author'];して、作成者を必要なフィールドに置き換えるだけです。

于 2013-09-30T14:45:38.970 に答える