Индекс массива выглядит как имя функции - PullRequest
0 голосов
/ 16 февраля 2020

Я узнал о 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)}";

Он определяется как функция внутри этого массива, а не как индекс. ошибка в laravel

Я пытался использовать foreach l oop, а также:

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

Я пытался также переименовать этот индекс без успеха , Итак, возникает мой вопрос: как мне отобразить данные этого массива по этому индексу?

1 Ответ

0 голосов
/ 17 февраля 2020

Это может работать ...

$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.';
...