【问题标题】:Index of array looks like function name数组的索引看起来像函数名
【发布时间】:2020-05-31 15:56:21
【问题描述】:

我学习了 laravel 和 php,最近我遇到了一些我试图描述的问题: 我试图呼应男性的平均年龄。我正在使用我在与 laravel 相关的论坛上找到的这个功能: $resultMale = DB::select($maleSQL, array(1));

我的问题是它返回的数组索引取自该查询

$maleSQL = "SELECT books.name, books.book_date, AVG(reviews.age) FROM books, reviews where name='{$this->name}' and sex='m' and {$this->condition};";

如果我想访问索引为“名称”的数据,我会使用:

echo "{$resultMale[0]->name}";

但是当我尝试访问 AVG(reviews.age) 下的数据时,我的问题就开始了

 echo "{$resultMale[0]->AVG(reviews.age)}";

它被检测为这个数组中的一个函数而不是一个索引。 error in laravel

我尝试过使用 foreach 循环以及:

 $bypassFunctionAVG="avg(reviews.age)";
 echo "{$resultMale[0]->{$bypassFunctionAVG}}";

我也尝试过重命名这个索引,但没有成功。 所以我的问题是:如何在这个索引下回显这个数组的数据?

【问题讨论】:

  • 您可以在 SQL 中为列添加别名 - AVG(reviews.age) as averageAge
  • 我正在寻找如何做到这一点,但我找不到答案。你能告诉我怎么做或者给一些链接吗?
  • 只需在我的第一条评论中添加as averageAge 部分,然后看看你的结果。
  • 我是这样使用的: echo "{$resultMale[0]->AVG(reviews.age) as averageAge}";仍然没有工作
  • 放在SELECT语句中。

标签: php laravel stdclass


【解决方案1】:

这可能行得通……

$avg = $resultMale[0]->{"AVG(reviews.age)"}
echo $avg;

否则,请尝试使用别名(注意,“AS avg”)

$maleSQL = "SELECT books.name, books.book_date, AVG(reviews.age) AS avg FROM books, reviews where name='{$this->name}' and sex='m' and {$this->condition};";

echo $resultMale[0]->avg;

也不需要双引号来回显变量,就像您在上面所做的那样。它们在某些情况下很有用,但不是必需的。 echo $var, echo "$var", echo "{$var}" 都会做同样的事情。

这些东西都会有同样的结果……

$value = 25;
echo "The value is $value.";
echo "The value is {$value}.";
echo "The value is " . $value . ".";
echo 'The value is ' . $value . '.';

这些不会有与上面相同的结果...

// use {} around non-trivial variable expressions
echo "The value is $object->value.";

// single quotes don't do anything to variables
echo 'The value is $value.';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    相关资源
    最近更新 更多