我一直在使用php chr()
函数,我想通过使用从1开始的变量打印每个字符,打印ASCII值,然后递增它然后重复此操作。这就是我所做的:
<?php
$i = 0;
while($i<255)
{
echo chr($i)."\n";
$i++;
}
?>
成功的。它会打印出每个ASCII值,但我注意到如果我使用值大于255的东西,就像这样:
chr(300);
只要它超过255,它就会从头开始重新开始。所以,我想知道是否有任何方法让php打印两个字符,如果它超过255(例如,当你使用数字300时它放置字符255后跟字符45)。这可能吗?如果是这样,我该怎么做?
答案 0 :(得分:1)
你走了。它是无限循环而且毫无意义但它应该有效。
<?php
$i = 0;
$string = '';
do
{
if($i<255) {
echo $string . chr($i)."\n";
$i++;
} else {
$string .= chr(255);
$i = 0;
}
}
while($i<255);
?>
这里有循环限制:
<?php
$i = 0;
$j = 0;
$limit = 255*4;
$string = '';
do
{
$j++;
if($i<255) {
echo $string . chr($i)."\n";
$i++;
} else {
$string .= chr(255);
$i = 0;
}
}
while($i<255 && $j<$limit);
?>
答案 1 :(得分:1)
只是为了好玩,这是一个递归解决方案:
<?php
function char($i, $max = 255) {
if ($i > $max) {
return char($max, $max) . char($i-$max, $max);
}
return chr($i);
}
echo char(365, 66);
echo "\n";
echo char(1365, 122);
echo "\n";
不要将第二个参数提供为默认值255。
示例输出:
BBBBB#
yyyyyyyyyyy"
答案 2 :(得分:0)
这基本上就是你要找的东西(但没有意义):
$char = (int) X;
输入变量。它是一个整数。你想要做一些事情,所以我们采取while
循环:
while ($char >= 0) {
虽然$char
大于或等于零,但仍有事可做。如果它低于255,我们输出它并打破循环:
if ($char < 256) {
echo chr($char);
break;
}
精细。现在是疯狂的部分。由于它可能大于256,我们只输出:
echo chr(255);
始终?是的,总是。当我们输出它时,我们从值
中减去它 $char -= 256;
然后我们再次尝试循环:
}
正如你所看到的,这根本没有任何意义:
$char = (int) X;
while ($char >= 0) {
if ($char < 256) {
echo chr($char);
break;
}
echo chr(255);
$char -= 256;
}
如果大于255,它只会为chr(255)
添加一些模数值。对于什么?对于chr(255)
前缀?