在PHP中将字符串转换为整数

时间:2015-08-25 12:36:12

标签: php string casting int

我一直在尝试在PHP中将字符串转换为int来对其进行操作,但PHP会将其解释为0。

(int) $Pux,
intval($Pux)
settype($Pux, "integer")

我尝试了几种方法,比如

        Database currentDB = Application.DocumentManager.MdiActiveDocument.Database;
        using (Transaction transaction = currentDB.TransactionManager.StartTransaction())
        {
            BlockTable blockTable = (BlockTable)transaction.GetObject(currentDB.BlockTableId, OpenMode.ForRead);

            //Create the block if it doesn't exist
            if (!blockTable.Has("MyBlock"))
            {
                using (BlockTableRecord myBlock = new BlockTableRecord())
                {
                    myBlock.Name = "MyBlock";
                    myBlock.Origin = Point3d.Origin;

                    //You can add geometry here, but I'm just going to create the attribute
                    using (AttributeDefinition attribute = new AttributeDefinition())
                    {
                        attribute.Position = Point3d.Origin;
                        attribute.Tag = "Constant";
                        attribute.Prompt = "Enter value: ";
                        attribute.TextString = "My value";
                        attribute.Height = 0.5;
                        attribute.Justify = AttachmentPoint.BottomLeft;
                        attribute.Constant = true;

                        myBlock.AppendEntity(attribute);

                        //add to the block table
                        blockTable.UpgradeOpen();
                        blockTable.Add(myBlock);
                        transaction.AddNewlyCreatedDBObject(myBlock, true);

                    }

                }

                transaction.Commit();
            }
        }

但他们都给我0而不是89。

应该怎么做?

6 个答案:

答案 0 :(得分:1)

如果你不在$varname之间放置空格并将演员的结果分配给变量,则没有问题。

<?php 
    $Pux = "89";
    var_dump ($Pux);
    $t = (int)$Pux;
    var_dump ($t);
?>

输出=

string(2) "89"
int(89)

答案 1 :(得分:0)

将字符串转换为数字的最简单方法: -

<?php
$Pux = "89"; // Or any other number
$Num = (int) $pux;
?>

如果你仍然得到零,那么数字前面可能会有一些奇怪的,不可见的字符。为了测试: -

回声&#34;($ Pux)&#34 ;;

答案 2 :(得分:0)

由于var_dump($Pux);输出string(6) "89"(不是string(2)),这意味着您的字符串包含 6符号,我认为它们是4个单括号{{1} }和(')。因此,请尝试从字符串中删除括号:

89

或删除双括号(为安全起见)

$Pux = str_replace("'", '', $Pux);

<强> EDITED

最好删除所有非数字值:

$Pux = strtr($Pux, array("'" => '', '"' => ''));

然后转换为整数。

感谢。

答案 3 :(得分:0)

下面的代码删除了非数字字符::

function numeric( $st_data )
    {
        $st_data = preg_replace("([[:punct:]]|[[:alpha:]]| )",'',$st_data);
        return $st_data;    
    }

答案 4 :(得分:0)

您可以通过两种方式将字符串转换为整数:

Typecasting或  intval function

<?php
 $pux = "89";
 var_dump($pux);
 $pux = (int) $pux;
 var_dump($pux);
 $pux = "89";
 $pux =  intval($pux);
 var_dump($pux);
?>

答案 5 :(得分:0)

我有同样的错误。 确实,当我这样做时var_dump($ myvar)。 它返回string(2)“ 89” 当我完成所有强制转换功能后,它返回了0。 我搜索,最后答案在此页面中。 因此,我与您分享了我学到的东西。 您只需要做一个正则表达式php: $ myvar = preg_replace(“ / [^ 0-9,。]”,“”,$ myvar)。它将删除字符串中的所有非数字(在我的情况下为string(2))。