Я получил свои данные из команды запроса базы данных Laravel:
$group = DB::table('groups')->where("id", $group_id)->first();
Когда я сохраняю свои данные, я получаю:
object(stdClass)#200 (7) {
["id"]=>
int(1)
["levels_id"]=>
int(1)
["title"]=>
string(8) "Novice 1"["description"]=>
string(11) "Lorem Ipsum"["max_question_display"]=>
int(5)
["created_at"]=>
NULL
["updated_at"]=>
NULL
}
Я хочу получить доступ к max_question_display
, Но, когда я делаю:
var_dump($group["max_question_display"]);
PHP возвращает ошибку Cannot use object of type stdClass as array
,
Когда я делаю:
var_dump($group->max_question_display);
Я получил:
int(5)
Но я не хочу int
, Я хочу только 5
, В целочисленной форме.
Если я foreach
зациклить $group
:
foreach ($group as $t) {
echo "<pre>";
var_dump($t);
echo "</pre>";
}
Я получаю каждый из данных как отдельные данные каждого цикла.
int(1)
int(1)
string(8) "Novice 1"string(11) "Lorem Ipsum"int(5)
NULL
NULL
Это, очевидно, также не тот способ, которым достигается результат, который я ищу.
Я также попытался получить первый элемент массива, думая, что это может быть массив с 1 элементом, но это также вызывает ту же ошибку.
Я понял, что общий ответ на этом сайте об этой ошибке: «stdClass — это не массив». Я просмотрел несколько вопросов с похожим названием, как у меня, но ничего не указывал на объект, полученный из Laravel DB. Когда я прочитал руководство по Laravel DB, я был уверен, что могу получить доступ к данным, возвращаемым как простой словарь / хэш-карта.
РЕДАКТИРОВАТЬ: Извините, я понимаю мои очень, очень новичок ошибки. Не надо на это отвечать. Благодарю.
Обратите внимание на первую строку вашего первого var_dump:
object(stdClass)#200
Поскольку вы имеете дело с объектом, вы получаете доступ к его свойствам с помощью ->
, Когда вы делаете:
var_dump($group->max_question_display);
Причина, которую вы видите (int)
в результате, что var_dump
Функция показывает тип значения рядом со значением. Чтобы получить доступ к значению, сделайте
$group->max_question_display;
Если вы хотите увидеть его на экране без типа, используйте echo
echo $group->max_question_display; // 5
stdClass — это объект. Вы не можете использовать объект с синтаксисом массива для доступа к его свойствам, если класс не реализует ArrayAccess интерфейс.
Как указывает @IbrahimLawal, var_dump выводит как тип, так и значение. Просто повторение $group->max_question_display
обеспечит только ценность
echo $group->max_question_display; // 5
В итоге: вы должен используйте синтаксис стрелки при взаимодействии с stdClass.