为什么我不能在PHP中“打印”一个数组?

时间:2013-12-01 21:47:05

标签: php arrays pdo

我是新手,我在这里看到了许多不同的帖子,以及谷歌上发现的很多其他资源,但我仍在努力使用数组。

在我的HTML中,我基本上试图在我的数据库中显示一列美元金额的总和。

这是我的HTML / PHP:

 <div class="col-sm-2">                  
    <h1><?php get_sum_income(); ?></h1>
 </div>

这是我的外部PHP文件及其调用的函数:

function get_sum_income() {
require(ROOT_PATH . "inc/database.php");

try {
    $results = $db->prepare("SELECT SUM(cat_amount) FROM categories WHERE is_income = '1';");
    $results->execute();
} catch (Exception $e) {
    echo ("ERROR: Data could not be retrieved from the database." . $e);
    exit;
}
$sum_income = $results->fetch(PDO::FETCH_ASSOC);
print $sum_income;

};

我不断收到“数组到字符串转换”错误,我知道它与我对数组的理解(或缺少数组)有关。我环顾四周,我只是需要帮助解决我的具体情况。

另外,我是如何以最佳方式访问该功能的?

2 个答案:

答案 0 :(得分:5)

你不能print一个数组。 print适用于标量。 PHP正在尝试将您的数组转换为字符串,以便它可以print,但即使它自己的尝试也会失败,因为它根本不受支持。

但你可以print_r


更新听起来您想要自己检索作为数据库查询结果的数组的单个元素。它在一个数组中,因为PHP提前知道你的结果集中只有一个列。

在你的情况下,你会写:

print $sum_income['SUM(cat_amount)'];
但是,这非常笨拙。您可以通过在MySQL查询中为列添加别名来缩短它:

SELECT SUM(`cat_amount`) AS `mySum` FROM `categories` WHERE `is_income` = '1';

然后:

$row = $results->fetch(PDO::FETCH_ASSOC);
print $row['mySum'];

(我也改进了变量名称!)

答案 1 :(得分:1)

您无法打印或回显数组。但是,您可以打印它的特定元素:

echo $myArray['foo'];

或者,您可以var_dumpprint_r