[英]Unexpected behavior with strnatcmp() PHP
我正在尝试使用一个函数来增加PHP中的alphas,例如A-> ZZ或AAA - > ZZZ,其中包含所有变量,即。 A,B,C ...... AA,AB,AC..ZX,ZY,ZZ等。
以下代码有时会起作用,但在某些情况下会中断,此示例可以正常工作。
$from = "A";
$to = "ZZ";
while(strnatcmp($from, $to) <= 0) {
echo $from++;
}
虽然这不能按预期工作。
$from = "A";
$to = "BB";
while(strnatcmp($from, $to) <= 0) {
echo $from++;
}
输出是:
First: A B C D .. AA AB AC .. ZX ZY ZZ
Second: A B
有谁知道这里发生了什么? 或者对我的问题采取不同的方法。 谢谢
这可行,但它停在BA
...所以你可以说$to = 'BC';
或者你可以投入$to++;
在你宣布$to
之后。
$from= 'A';
$to = 'BB';
while ($from !== $to) {
echo $from++;
}
$from= 'A';
$to = 'BB';
$to++;
while ($from !== $to) {
echo $from++;
}
如果您使用的是PHP 5.5,则可以使用生成器。
function alphaRange($from, $to) {
++$to;
for ($i = $from; $i !== $to; ++$i) {
yield $i;
}
}
foreach (alphaRange('A', 'BB') as $char) {
echo $char;
}
这应该适合你:
<?php
$from = "AA";
$to = "BB";
while(strnatcmp($from, $to) <= 0)
echo $from++ . "<br />";
?>
输出是:
AA...BB
如果你也想要字母表,那么在上面的代码之前复制它:
$from = "A";
$to = "Z";
while(strnatcmp($from, $to) <= 0)
echo $from++ . "<br />";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.