借りている「さくらインターネット」ではまだ 5.3.0 は使えないみたいですが、
ローカルの 5.3.0 で動かしてみると気持ち良く動いたのです。
なんだか JavaScript 書いてるみたいで。
特に複雑な変数を明示する為の {} が役に立ってますねぇーー
5.3.0 での違いをはっきり認識したのは今回初めてだったのですが、
そんなにいちいちドキュメントに目を通すわけでも無く。ただ、必ず
さくらインターネットにアップして実行を確かめるのが常なので、
サーバーで動かなくって、「あれれれれ」
今後はもっと気を付けましょう。
<?
// **********************************************************
// n 桁の前ゼロ文字列を作成するには
// 以下で簡単に作成できますが、
// **********************************************************
$a = sprintf("%05d", 1);
print "$a<br>";
// **********************************************************
// どんな言語でもたぶんある関数(メソッド)を使って行うには
// **********************************************************
// 1) n 桁の 0 を目的の文字列の前に連結する
$a = "00000" . 1;
// 2) 全体の長さを取得する
$len = strlen($a);
// 3) 全体の長さ - 欲しい長さを開始位置とする
$start = $len - 5;
// 4) その位置から欲しい長さぶん切り取る
$x = substr( $a, $start, 5 );
print "$x<br>";
// **********************************************************
// PHP 5.3.0 より実行可能な無名関数
// **********************************************************
$f = function( $target, $n ) {
$target = str_repeat("0",$n) . $target;
$len = strlen($target);
$start = $len - $n;
$target = substr( $target, $start, $n );
return $target;
};
print "{$f(1,5)}<br>";
print "{$f("AA",5)}<br>";
print "{$f("あA",5)}<br>";
print "{$f(1234,5)}<br>";
print "{$f(12345,5)}<br>";
?>
関連する記事
PHP : 前ゼロ文字列作成と右から必要な長さ文字列を取得する処理