我试图将值作为数组存储在for
循环中,以便可以在循环外部访问它们。
foreach ($doctor->booking as $booking) {
$bookeddate = date('Y-m-d', strtotime($booking->booked_time));
if( $bookeddate == $end_date ) {
$booked_time[] = date('H:i a', strtotime($booking->booked_time));
}
}
foreach ($booked_time as $key ) {
echo $key;
}
此代码不断给我一个错误"Undefined variable: booked_time"
答案 0 :(得分:4)
尝试
在使用之前初始化$booked_time
,因为它仅在函数内部具有作用域
$booked_time = [];
foreach ($doctor->booking as $booking) {
$bookeddate=date('Y-m-d',strtotime($booking->booked_time));
if($bookeddate==$end_date){
$booked_time[]=date('H:i a',strtotime($booking->booked_time));
}
}
foreach ($booked_time as $key ) {
echo $key;
}
答案 1 :(得分:1)
这不适用...
您创建的数组仅对该范围有效(这里对您的FOREACh有效)。
一旦您退出该范围,就会出现数组变量。 解决方案- 在可以访问两个foreach的全局范围内声明数组。
答案 2 :(得分:1)
您应该做的三件事:
在循环之前将变量$ booked_time初始化为空数组:然后确保始终在循环之前定义一个数组,如下所示:
$booked_time = [];
-这将使错误消失
验证$ end_date实际上有一个值(该定义未包含在您的代码段中),因此有一些要比较的地方
如果确实具有值,请确保$ end_date的格式与bookeddate一样,格式为date(“ Ymd”),因为您正在进行字符串比较,其中date(“ Ymd”)与date不同(“ Ymd”),即使他们指的是同一天
答案 3 :(得分:0)
由于块作用域的概念,这是不可能的。您可以阅读有关PHP here中的变量作用域的更多信息。
通常,这意味着大括号内声明的每个变量只能在此代码块中访问。
解决此问题的最简单方法是预先创建一个空数组,如下所示:
$booked_time = [];
foreach ($doctor->booking as $booking) {
$bookeddate=date('Y-m-d',strtotime($booking->booked_time));
if($bookeddate==$end_date){
$booked_time[]=date('H:i a',strtotime($booking->booked_time));
}
}
foreach ($booked_time as $key ) {
echo $key;
}
答案 4 :(得分:0)
在for循环外创建数组。
然后使用array_push()
将元素添加到数组中
可能的解决方案
$booked_times = [];
foreach ($doctor->booking as $booking) {
$bookeddate = date('Y-m-d',strtotime($booking->booked_time));
if($bookeddate==$end_date){
array_push($booked_times, date('H:i a',strtotime($booking->booked_time));
}
}
foreach ($booked_time as $key ) {
echo $key;
}
答案 5 :(得分:0)
您可能要考虑使用集合。它们真的很酷,您可以使用许多方法。 https://laravel.com/docs/5.7/collections。 我将使用上面您喜欢的帖子中的代码,并将数组更改为集合。
$booked_time = collect();
foreach ($doctor->booking as $booking) {
$bookeddate=date('Y-m-d',strtotime($booking->booked_time));
if($bookeddate==$end_date){
$booked_time->push(date('H:i a',strtotime($booking->booked_time)));
}
}
foreach ($booked_time as $key ) {
echo $key;
}