【发布时间】:2014-04-04 04:02:50
【问题描述】:
我正在为学校做一个项目,我是第一次使用 laravel 框架。我遇到了一个小问题,我被困了好几天,尝试了很多不同的方法 - 没有任何效果。
我已经构建了一个时间函数,它将接受多个参数,然后通过 while 循环检查数据库,然后将所有结果添加到“全局”数组中,然后另一个函数将测试该全局数组并检查其中的值。
我遇到的问题是我无法让函数正确访问全局数组:
我在网上尝试了很多不同的想法,但无法获取类的内部函数来访问全局数组 -
有人知道一个简单的方法吗?谢谢
尝试过(在最顶端 - 在课堂之前,也在顶部的课堂内)
$Global['ScheduleTest'] = array();
global $ScheduleCheck = array();
(inside class ) private $ScheduleCheck = array();
完整代码:::::::
<?php
global $ScheduleCheck = array() ;
class CourseRegistrationController extends BaseController {
public function __construct() {
$this->beforeFilter('csrf', array('on'=>'post'));
}
.....
// Function to test time overlaps
function testTimeOverlap($course ,$regday, $start_time,$end_time)
{
$start_time1 = (substr($start_time, 0, 5)) ;
$end_time1 = (substr($end_time, 0, 5)) ;
$ScheduleArr = makeSchedule();
$reg_days = explode(",",$regday);
foreach ($reg_days as $rday)
{
foreach ($ScheduleArr as $schedule)
{
if((strtolower($rday))==(strtolower($schedule['day'])))
{
$start_time2 = (substr($schedule['stime'], 0, 5)) ;
$end_time2 = (substr($schedule['etime'], 0, 5)) ;
if(testTime($start_time1,$end_time1,$start_time2,$end_time2))
{
array_push($ScheduleCheck, array("course"=>$course,"value"=>"true","day"=>$rday ));
}
else
{
array_push($ScheduleCheck, array("course"=>$course,"value"=>"false","day"=>$rday ));
}
}
else
{
array_push($ScheduleCheck, array("course"=>$course,"value"=>"true","day"=>$rday ));
}
}
}
}
// Another function to go through the global array
function finalTimeTest()
{
testNewTime((strtolower(Input::get('course_id'))),(strtolower(Input::get('lecture_id'))),(strtolower(Input::get('tutorial_id'))),(strtolower(Input::get('lab_id'))));
foreach($ScheduleCheck as $ckTime)
{
if($ckTime['value']=="true")
{
return true;
}
else
{
return ($ckTime['course']." ");
}
}
}
?>
【问题讨论】:
-
仅供参考:您通过引入 global 关键字打破了
OOP的概念。 -
尝试了其他方法,例如在顶部设置私有变量等...不起作用
-
不要使用 global 变量,而是可以创建成员
public,这样它们也可以在类外访问。 -
试过 public static $ScheduleCheck; - 也不起作用
标签: php arrays laravel global-variables