我一直在尝试在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。
应该怎么做?
答案 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)
您可以通过两种方式将字符串转换为整数:
<?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))。