PHP无法从数组中获取输出


PHP can't get output from array

我昨晚发了一个问题,结果证明不是问题。深入研究后,我发现下面的代码让我很头疼。我有这个工作,但现在由于某种原因,我没有输出。当我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,但似乎仍然找不到问题

有两个问题:

  1. 数组索引在字符串和数字之间的行为不同,
  2. $minarray .
  3. 变量范围

$arr[01]$arr['01']不是同一件事,所以你应该更明确;在你的情况下,你可以让数组保持数字索引,即:

$minarray = array('00', '02', '03', '05', ...);

然后,对给定的分钟使用(int)强制转换:

$finishmins = $minarray[(int)$finishmins];
可以通过将数组作为函数参数传递来解决第二个问题:
function finishtime($minarray, $finish) 

然后这样调用:

echo finishtime($minarray, '12:01');

当引用$minarray变量时,您必须在函数中使用关键字global:

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;
}