将字符串更改为int

时间:2014-12-15 11:05:12

标签: php string int

在我的商店中,我试图将一个字符串更改为一个整数,我正在使用的代码是:

<?php echo $_excl; ?>

<?php $int_excl = intval($_excl);?>

<?php var_dump ($int_excl);?>

当i var_dump $int_excl表示值为0时应为4.99。

我做错了什么?

var_dump ($_excl)返回string(33) "£4.99"

4 个答案:

答案 0 :(得分:1)

floatvalintval方法都开始从字符串的开头查找数字(删除前面的空格) - 并停止查看不能作为数字一部分的第一个符号。在你的情况下,它是第一个 - £。这就是为什么intval只返回0(如floatval那样)。

解决此问题的一种方法是使用preg_replace删除字符串开头的所有非数字符号:

$excl = '£4.99';
$value = preg_replace('/^\D+/u', '', $excl);
var_dump(intval($value));   // int(4)
var_dump(floatval($value)); // float(4.99)

Demo。这种方法具有变化抗性 - 如果£$或任何其他货币符号替换,或者完全删除,则可以(无需任何修改)。

答案 1 :(得分:0)

您正在解析浮点值,因此需要floatval() PHP Float Manual

如果intval()返回0,则表示转换失败。资料来源:PHP Intval

在您的情况下,转换失败,因为字符串不是以数字开头,而是使用货币符号

这可以解决您的问题:

<?php 
    echo $_excl;
    $int_excl = floatval(ltrim($_excl, '£'));
    var_dump ($int_excl);
?>

ltrim删除第一个字符,如果它是£

答案 2 :(得分:0)

<?php
$_excl = '4.99' ;//assuming
echo $_excl; 
$int_excl = floatval($_excl);
var_dump ($int_excl);
?>

使用上面的代码,因为$ _excl = 4.99这是一个浮点值,intval()将返回4.

答案 3 :(得分:0)

这应该适合你:

(您必须从字符串中删除字符£

<?php

    $_excl = "£4.99";
    $_excl = str_replace("£", "", $_excl);
    $int_excl = floatval($_excl);
    var_dump ($int_excl);

?>

输出:

float(4.99)