首先,让我们说为了论证,我想要这样做的原因是任意的,而不是特定于解决方案。
我想显式地转换一个变量,无论输入如何,并在类型转换后增加它,不和原始变量。例如,不是这样的:
$num = "47 downvotes";
(int) ++$num;
我正在寻找类似于这个伪代码版本或其变体的东西:
$num = "value";
++((int) $num);
对于PHP松散,我真的希望这可以工作,但我不能先使用Pre-increment运算符而不先创建另一个变量。
$num = "value";
$cast = (int) $num;
echo ++$cast;
在测试时,我发现PHP 足够松散,但是通过添加数字来实现它的工作原理:
$num = "47 dogs";
echo ((int) $num) + 1;
我也理解我的第一个例子,没有错,但是再次,出于任意原因,我需要确保它在递增/递减之前已被转换。
所以问题是,为什么PHP足够松散以便后者编译?
如果你能提供任何有信誉的阅读材料的资源或链接,我也会很感激。
答案 0 :(得分:0)
使用显式类型转换,您必须将结果分配给变量。在您的示例中,您试图在变量为字符串时增加变量,这些变量失败或不会产生您期望与类型转换相结合的结果。
看看你原来的例子:
<?php
$num = "47 downvotes";
echo $num . PHP_EOL;
echo ++$num;
增加字符串的结果不是您所期望的结果:
47 downvotes
47 downvotet
所以你最初的假设是PHP实际上并不起作用。
$num = "47 downvotes";
echo (int) ++$num . PHP_EOL;
$num2 = "47";
echo (int) ++$num2;
输出:
47
48
类型转换的过程本质上很复杂,并且有各种各样的行为可以产生意想不到的结果,并且只是不是可靠的“修复你的输入”,它可以让你找到你可用的任何字符串的数字部分在一行代码中,但这并不意味着PHP存在缺陷。