【问题标题】:Why can't I `print` an array in PHP? [closed]为什么我不能在 PHP 中“打印”一个数组? [关闭]
【发布时间】:2013-12-01 21:47:04
【问题描述】:

我是新手,我在这里查看了许多不同的帖子,以及在 google 上找到的许多其他资源,但我仍在努力处理数组。

在我的 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;

};

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

另外,我如何访问该函数是最好的方法吗?

【问题讨论】:

标签: php arrays pdo


【解决方案1】:

你不能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'];

(我也改进了变量名!)

【讨论】:

  • 好的,这有帮助,但现在我得到了输出“Array ([SUM(cat_amount)] => 1800.24)”。我之前尝试过 print_r,但我想我正在为如何仅访问总和以显示在页面上而苦苦挣扎。
  • 看我的回答。您可以打印/回显数组的特定元素。
  • @user1476992:我已经更新了。
【解决方案2】:

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

echo $myArray['foo'];

或者,您可以var_dumpprint_r 它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 2016-02-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2012-12-28
    相关资源
    最近更新 更多