U-style PHP独学日記  Since2001 メインメニューに戻る PHPメニューに戻る
タイトル文字を出力する関数
文書管理番号 作成日 分類1 分類2 キーワード

PHP0023

2004-02-02   print(),echo,printf

本日は文字を出力する方法のあれこれです。
もう何度かでてきた関数ですがまずprnt( )とecho( )を実行してみます。途中あえて全角と半角の文字を入れてみました。それでもきちんと出力されるようです。

<?
//いろいろな値をprintとechoで出力してみる
$moji_en = "abcABC" ;
$moji_jp = "あいうアイウ" ;
$suji_int = 100;
$suji_flo = 100.01;

//print()を使う
print("printを使ったときの\$moji_enは(英数字)" . $moji_en . "です<br>");
print("printを使ったときの\$moji_jpは(半角全角の組合)" . $moji_jp . "です<br>");
print("printを使ったときの\$suji_intは(整数)" . $suji_int . "です<br>");
print("printを使ったときの\$suji_floは(小数点)" . $suji_flo . "です<br>");
print("<br>");

//echo()を使う
echo("edhoを使ったときの\$moji_enは(英数字)" . $moji_en . "です<br>");
echo("echoを使ったときの\$moji_jpは(半角全角の組合)" . $moji_jp . "です<br>");
echo("echoを使ったときの\$suji_intは(整数)" . $suji_int . "です<br>");
echo("echoを使ったときの\$suji_floは(小数点)" . $suji_flo . "です<br>");

?>
実行結果

printもechoも特に異なった点はありませんでした。printは成功したときにtrueを返し失敗したときにfalseを返すという特徴があるみたいですがechoにはこれがないみたいです。つまりただ単に文字を出力するだけ(出力の結果にこだわらなければ)ならどちらにこだわるかはあまり必要ないみたいです。

print・・・マニュアルより
echo・・・マニュアルより

次にprintf( )を試してみます。printfは数字や文字をフォーマットに当てはめて出力できる関数です。どこかでみたことあるようなと思っていたら確かC言語でこんな書き方をしていたような記憶があります。fprintのマニュアルよりsprintのマニュアルのほうが詳細に書いてあります。これもどうやらほぼ同じような関数みたいです。なぜこんなに似通った関数等があるのだろうか。

構文
printf("フォーマットの指定",値(変数もちろんOKというか変数のほうがよく使うと思う));
フォーマットの指定方法

% 桁数のフォーマット 型
例えば文字列を全部出力したいといったときは桁数を指定せずに
%sとなります

小数点表示の場合で小数点以下3桁以上はいらないといったときには
%.2fと指定すれば142.25と表示されます。ただここで変数の値に1234567890.123456789という大きい値を入れていますがこれを出力したところ結果は123456789.123457となりました。型の特性ですが大きい数字を扱うときは注意しなければいけません。

最後に数字の先頭を0で埋めたいという場合に(00025とか)
%05d(整数)とった指定をすると0001という様に表示してくれます

 


<?
//いろいろな値printf()で出力してみる
$str_a = "123456789.123456789";
$flo_a = 123456789.123456789;
$str_b = "123.123";

echo("文字列の表示<br>");
printf("%s<br>","123456789.123456789");
printf("%s<br>",$str_a);
printf("%s<br>",$flo_a);
printf("%s<br>",$str_b);

echo("浮動小数点の表示(型はdouble)<br>");
printf("%.f<br>",$str_a);
printf("%.f<br>",$flo_a);
printf("%.f<br>",$str_b);

echo("バイナリ出力(型は整数)<br>");
printf("%.b<br>",$str_a);
printf("%.b<br>",$flo_a);
printf("%.b<br>",$str_b);

echo("桁を指定して表示する<br>");
printf("%05.2f<br>",$str_a);
printf("%05.2f<br>",$flo_a);
printf("%05.2f<br>",$str_b);

echo("桁を指定して表示する(整数)<br>");
printf("%05d<br>",$str_a);
printf("%05d<br>",$flo_a);
printf("%05d<br>",$str_b);

?>

実行結果

下記はフォーマット指定のいろいろです。(PHPマニュアルより参照させていただきました。)

% - パーセント文字。引数は不要です。
b - 引数を整数として扱い、バイナリの数値 として表現します。
c - 引数を整数として扱い、その ASCII 値 の文字として表現します。
d - 引数を整数として扱い、10 進数として 表現します。
u - 引数を整数として扱い、符号無しの10進 数として表現します。
f - 引数を double として扱い、浮動小数点数 として表現します。
o - 引数を整数として扱い、8 進数として 表現します。
s - 引数を文字列として扱い、表現します。
x - 引数を整数として扱い、16 進数として (小文字で)表現します。
X - 引数を整数として扱い、16 進数として (大文字で)表現します。

本日の参考文献

  •  MySQL&PHPでつくるWebデータベース Spencer K Ogawa著 エーアイ出版
  •  http://www.php.net/manual/ja/