【问题标题】:PHP can't get output from arrayPHP 无法从数组中获取输出
【发布时间】:2014-06-23 01:26:13
【问题描述】:

我昨晚发布了一个问题,结果证明不是问题所在。挖掘了一下,我发现下面的代码让我很头疼。我有这个工作,但现在由于某种原因我没有输出。当我var_dump 给我$finishmins 值的函数时,它会正确输出所有内容,直到它必须搜索数组(如下所示)。在此之后它显示NULL。我最初使用strpos 来确定它是否以零开头,然后剥离所述零以匹配数组,但是当它停止工作时,我尝试了以下方法来减少代码。

代码的重点是将时间中的分钟转换为十进制表示法的分钟。 IE。 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,但似乎仍然找不到问题。

【问题讨论】:

  • 刚看到这个问题,我想知道这是否是我的问题的一部分:stackoverflow.com/questions/4750781/…
  • $minarray 未在您的函数范围内定义。
  • @Dr.Molle 我的行动方案是什么?恢复使用 strpos 去除零并重新发布代码?

标签: php arrays


【解决方案1】:

这里有两个问题:

  1. 数组索引在字符串和数字之间表现不同,
  2. $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');

【讨论】:

  • 所以我遇到问题的原因是因为我没有将数组传递给函数?您所说的大部分内容都是有道理的,只是不确定这是否是您对数组的意思。
  • @BigJazzz 我提到的这两个问题都会导致您的代码没有给出“12.02”的预期结果。
  • 抱歉,选词不当。那可能应该说“原因之一”。
  • 确实如此;这是因为$minarray 没有在finishtime() 的范围内定义。
  • 好的,我在这里工作:codepad.org/QRqSvw2K 但是当我回到我的代码时,它仍然在输出12.00。我几乎每一步都在var_dumping,所以我会尝试再次从头开始构建它,看看会发生什么。为此干杯!
【解决方案2】:

当引用$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;
}

【讨论】:

  • 感谢锁定。肯定是问题的一部分。
猜你喜欢
  • 1970-01-01
  • 2017-09-03
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 2021-07-28
  • 2012-02-01
  • 1970-01-01
相关资源
最近更新 更多