PHP无法从数组中获取输出

时间:2014-06-23 01:26:13

标签: php arrays

我昨晚发了一个问题,结果证明不是问题。四处搜寻,我发现下面的代码给了我一个头。我有这个工作,但现在由于某种原因,我没有输出。当我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但仍然无法找到问题。

2 个答案:

答案 0 :(得分:1)

这里有两个问题:

  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');
    

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