0

私はphpchr()関数を使用してきました.1から始まる変数を使用してすべての文字を印刷し、ASCII値を印刷し、それをインクリメントしてからこのアクションを繰り返すという考えがありました。これは私がやったことです:

<?php
$i = 0;
while($i<255)
{
    echo chr($i)."\n";
    $i++;
}
?>

それはうまくいきます。すべての ASCII 値を出力しますが、次のように 255 を超える値を使用すると、次のようになります。

chr(300);

255を超えるとすぐに最初からやり直します。したがって、255を超える場合にphpに2文字を出力させる方法があるかどうか疑問に思っていました(たとえば、数値300を使用すると、文字 255 の後に文字 45 が続きます)。これは可能ですか?もしそうなら、どうすればいいですか?

4

3 に答える 3

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);
?>
于 2012-07-06T06:29:43.973 に答える
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 にするには、2 番目の引数を指定しないでください。

出力例:

BBBBB#
yyyyyyyyyyy"
于 2012-07-06T06:40:06.853 に答える
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;
}

chr(255)255 より大きい場合、モジュロ値の前にプレフィックスを付けるだけです。何のために? 前置き用chr(255)

于 2012-07-06T08:52:15.857 に答える