【问题标题】:Split an spliti are deprecated in Php 5.3. How can I replace them?拆分和拆分在 PHP 5.3 中已弃用。我该如何替换它们?
【发布时间】:2014-09-20 15:29:39
【问题描述】:

我正在实现一个将浮点数转换为字符串的函数。

function exp2int($exp) {
    list($mantissa, $exponent) = spliti("e", $exp);
    if($exponent=='') return $exp;
    list($int, $dec) = split("\.", $mantissa);
    bcscale (abs($exponent - strlen($dec)));
    return bcmul($mantissa, bcpow("10", $exponent));
}

这是一个例子:

$n = 2.777777778e-10;
echo exp2int($n);

返回:

0.0000000002777777778

我的服务器正在运行 Php 5.4,并且由于 splitsplit 自 PHP 5.3 起已弃用,我收到以下消息:

Deprecated: Function spliti() is deprecated
Deprecated: Function split() is deprecated

如何在我的 exp2int 函数中替换这些函数(不使用 @)?谢谢!

【问题讨论】:

    标签: php split php-5.4


    【解决方案1】:

    正如split() 上的 PHP 网站所说:

    提示 split() 自 PHP 5.3.0 起已弃用。 preg_split() 是此函数的建议替代方法。如果不需要正则表达式的强大功能,使用explode()会更快,不会产生正则表达式引擎的开销。

    同样适用于spliti()

    提示 spliti() 自 PHP 5.3.0 起已弃用。建议使用带有 i (PCRE_CASELESS) 修饰符的 preg_split()。

    但请注意,explode() 将分隔符 string 而不是 regex 模式作为参数。

    【讨论】:

    • 我试过了,但是用explode替换split不会返回确切的小数位数。
    • 你会得到什么?
    • 对于我得到的相同示例:0.0000000002
    • 那是因为你可能使用了split("\.", $mantissa)。但是,explode() 只需要分隔符,不需要模式。请改用split(".", $mantissa)
    猜你喜欢
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2022-01-21
    • 2021-09-12
    相关资源
    最近更新 更多