这真的很奇怪,Laravel告诉我“未定义的数组键0”,但是我能够回显Laravel看不见的值,并且我可以将它赋给一个变量。
$progress_check = db::select("select submitted, signed_off from users_to_stages where user_id = ? and sop_id = ? and stage_id = ?", [Auth::user()->id, $id, $do_stage_object->id]);
$thing = $progress_check[0]->submitted; // <-- $progress_check[0]->submitted contains 1
echo $thing;
exit;
我得到了从$thing
返回的1
。没有错误。但是!这个:
$progress_check = db::select("select submitted, signed_off from users_to_stages where user_id = ? and sop_id = ? and stage_id = ?", [Auth::user()->id, $id, $do_stage_object->id]);
$thing = $progress_check[0]->submitted;
if($thing) {
$do_stages[$do_stage_object->id]['submitted'] = 1;
} else {
$do_stages[$do_stage_object->id]['submitted'] = 0;
}
在$thing = ...
行上给出“Undefined array key 0”(未定义的数组键0),该行之前未引发错误并成功输出值(1)。
如果有帮助,下面是$progress_check
的print_r
和dd
:
print_r($progress_check);
Array
(
[0] => stdClass Object
(
[submitted] => 1
[signed_off] => 0
)
)
dd($progress_check);
array:1 [▼
0 => {#644 ▼
+"submitted": "1"
+"signed_off": "0"
}
]
我不是Laravel或面向对象PHP(或面向对象的任何其他东西)的Maven,所以也许我只是错过了一些我应该知道的东西?另一双眼睛同样被难倒了,所以...更多的眼睛请!
我应该提一下,我运行的是Laravel 8.83.22。
编辑:使用db::table
代替ItsGageH的答案会产生相同的错误和相同的情况,仍然能够回显/赋值它(只要我不在if
中使用if),但DB结果中的内容略有不同:
print_r($progress_check);
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => stdClass Object
(
[submitted] => 1
[signed_off] => 0
)
)
[escapeWhenCastingToString:protected] =>
)
编辑:加分(虽然是虚分)如果有人能告诉我那644是什么?
2条答案
按热度按时间6g8kf2rb1#
您需要在Select语句之前先指定表,然后使用
where
和get
所以,你会考虑做:
此处是Laravel选择语句的进一步引用
gmxoilav2#
答案“Undefined array key 0”意味着你还没有定义任何第一个元素带有0键。
[0 => Auth::user()->id]
看起来您可以在$progress_check处不使用[0]的情况下解决此问题:
您的奖励积分:644是关于阅读或写文件的权限,这取决于chmod设置了什么。这个选项经常被选中,不要在意。