我昨晚发了一个问题,结果证明不是问题。四处搜寻,我发现下面的代码给了我一个头。我有这个工作,但现在由于某种原因,我没有输出。当我var_dump
给出$finishmins
值的函数时,它会正确输出所有内容,直到它必须搜索数组(如下所示)。在此之后它显示NULL
。我最初使用strpos
来查明它是否以零开始,然后剥离所述零以匹配数组,但是当它停止工作时,我尝试了以下方法来减少代码。
代码的要点是以十进制表示法将时间分钟转换为分钟。即1分钟= 02,因此12:01 = 12.02。
$finishmins = '01';
$finishmins = $minarray[$finishmins];
$minarray = array(
00 => '00',
01 => '02',
02 => '03',
03 => '05',
04 => '07',
05 => '08',
06 => '10',
07 => '12',
08 => '13',
09 => '15',
10 => '17',
'18',
// Array continues to 59 => '98'
);
echo $finishmins;
我已在此处粘贴了完整的代码:http://codepad.org/EUW3n7AB但仍然无法找到问题。
答案 0 :(得分:1)
这里有两个问题:
$minarray
的可变范围。 $arr[01]
和$arr['01']
不是一回事,所以你应该更明确;在你的情况下,你可以将数组保持数字索引,即:
$minarray = array('00', '02', '03', '05', ...);
然后,您在给定的分钟内使用(int)
强制转换:
$finishmins = $minarray[(int)$finishmins];
您可以通过将数组作为函数参数传递来解决第二个问题:
function finishtime($minarray, $finish)
然后这样称呼它:
echo finishtime($minarray, '12:01');
答案 1 :(得分:0)
在引用global
变量时,您必须在函数中使用关键字$minarray
:
function finishtime($finish) {
global $minarray;
$finishx = explode(':', $finish);
$finishhours = $finishx[0];
$finishmins = $finishx[1];
$finishmins;
var_dump($finishmins);
$finishmins = $minarray[$finishmins];
var_dump($finishmins);
$finishtime = $finishhours . '.' . $finishmins;
return $finishtime;
}