我第一次学习PHP,我发现该语言允许在字符串上使用增量运算符,这令人惊讶。
$foo = 'xyZ';
print ++$foo; // prints xzA
我可以在本主题周围找到的教程仅介绍玩具示例。 如果您提到使用此“功能”有益的情况,我将不胜感激。
提前致谢!
答案 0 :(得分:4)
I would be grateful if you mention a situation where using this 'feature' is beneficial.
这可能是一个非常有用的功能...
示例强>
$guess = "21661093e56e24cd60b10092005c4ac7";
$next = "aaaa";
$count = 0;
while(md5($next) !== $guess) {
$next ++;
$count ++;
}
printf("Found `%s` after %s loops", $next, number_format($count));
输出
Found `baba` after 17,602 loops
我无论如何都不打算随时破解任何PIN或密码
答案 1 :(得分:0)
在http://php.net/manual/en/language.operators.increment.php查看名为“对字符变量的示例#1算术运算”的部分 - 您可以使用increment运算符将字符和序列添加到字符串中。
答案 2 :(得分:0)
Charachter实际上是一个数字。 你应该看一下ASCII表 http://en.wikipedia.org/wiki/ASCII
对charachter php文档进行Converst编号 http://php.net/manual/en/function.chr.php
$test = 'a';
$test++;
echo($test);
正如您在ASCII表中看到的那样,'a'= 97和'b'的数字表示= 98 因此显示'b'
答案 3 :(得分:0)
从the documentation开始,PHP在处理字符变量的算术运算时遵循Perl的约定:
例如,在PHP和Perl $ a ='Z'中; $ A ++;将$ a变为'AA',而在C a ='Z';一个++;将a转换为'['('Z'的ASCII值为90,'['的ASCII值为91)。请注意,字符变量可以递增但不递减,即使只支持纯ASCII字符(a-z和A-Z)。递增/递减其他字符变量无效,原始字符串不变。
虽然我个人没有使用过这个功能,但我可以通过遵循Perl的惯例来考虑一些好处,而不是C语言。这是在alpha范围内递增,而不是简单地递增ASCII值。
通过保持在alpha范围内,基本上我们谈论的是基础26 numeral system(使用字母)。就像9
增加到10
(结转)一样,z
增加到aa
。
立即想到的是字符哈希序列。
public static function nextSeed() {
// $seed = abc
return strtolower(++self::$seed);
// $seed = abd
}
尽管这些种子很可能会在PHP之外进行管理,但它仍然有益于PHP提供原本需要更多代码的内容。
其他用例: