如何摆脱未定义的偏移量?

时间:2016-10-27 18:36:35

标签: php arrays

我正在尝试从以下代码中删除未定义的偏移量错误,但无法弄清楚如何。

$number = 20;
$pack = 10;
$i = 0;
while ($number % $pack == 0)
{
    $number = $number / $pack;
    $i++;
}
list($firstpart,$secondpart)=explode('.', $number);

echo $firstpart;
echo '<br>';
echo isset($secondpart)? number_format($secondpart,0):'0';

此代码为我提供了正确的答案,但它输出了以下错误:

  

E_NOTICE:类型8 - 未定义的偏移量:1 - 第11行

如何更改代码以删除错误。在$ number = 20.5的情况下,没有错误。感谢。

2 个答案:

答案 0 :(得分:2)

由于您为list()使用了两个参数,它会尝试从[0]引用索引[1]explode(),但只有[0]因为{{} 1}}在没有explode()时只返回一个数组元素。请改用:

.

答案 1 :(得分:0)

这将有效:

list($firstpart, $secondpart) = explode('.', $number.(strpos($number, '.') === false ? ".0" : ''));

这是一个解释所以我不会被指控巫术: - )

list($firstpart, $secondpart) =
    explode(
        '.', // explode on a period
        $number.(strpos($number, '.') === false ? ".0" : '') // if the number does not contain a period then manually add ".0" so that explode can work but if it does then just leave it as-is
    );