将多维数组的值存储到变量中

时间:2013-09-30 14:43:44

标签: php mysql arrays multidimensional-array

我有以下代码:

$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"

正如你所看到的,它拼出了“数组”这个词。

echo $hey打印以下内容:

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

我的最终目标是将每个单独的值存储到变量中并使用它执行某些操作。这将发生在一个在数组上运行的for循环中,这样我就可以从每一行获取信息。

我做错了什么?

2 个答案:

答案 0 :(得分: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
  }
}

答案 1 :(得分:0)

$array = array( array( ID => 1, 
                  author => 0,
                  content => "This Is a Test",
          publication_date => 1380380992
                )
         );



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

这对我有用......

只需回显echo $array['0']['author'];并用您需要的字段替换作者。