【PHP8.x】printf関数の使い方

printf関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

printf関数は、フォーマット文字列に基づいて出力を行う関数です。C言語のprintf関数と同様の動作をし、変数や値を指定された形式で文字列に埋め込み、標準出力(通常は画面)に表示します。

この関数は、可変長引数を受け取ります。最初の引数は必須で、フォーマット文字列と呼ばれる文字列です。フォーマット文字列には、プレースホルダーと呼ばれる特殊な記号が含まれており、それらは後続の引数の値で置き換えられます。プレースホルダーはパーセント記号(%)で始まり、その後に型指定子(例えば、%sは文字列、%dは整数、%fは浮動小数点数)が続きます。

printf関数は、フォーマット文字列とそれに対応する引数の型が一致していることを確認しません。型が一致しない場合、予期しない結果を引き起こす可能性があります。したがって、プログラマは型を慎重に確認する必要があります。

この関数は、出力された文字数を返します。エラーが発生した場合は負の値を返します。printf関数は、デバッグやログ出力など、様々な場面で利用できます。例えば、変数の値を表示したり、特定の形式で情報を出力したりする際に便利です。

システムエンジニアを目指す上で、printf関数は基本的な出力手段として理解しておくべき重要な関数の一つです。様々なデータ型を整形して出力できるため、開発におけるデバッグ作業や、ユーザーへの情報提供において役立ちます。

構文(syntax)

1printf(string $format, mixed ...$values): int

引数(parameters)

string $format, mixed ...$values

  • string $format: 出力フォーマットを指定する文字列。%s(文字列)、%d(整数)、%f(浮動小数点数)などのフォーマットコードを使用します。
  • mixed ...$values: $format 文字列で指定されたフォーマットコードに対応する、可変長の引数。

戻り値(return)

int

printf関数は、指定されたフォーマット文字列に従って文字列を標準出力に出力し、出力したバイト数を整数で返します。

サンプルコード

php printf 関数で書式指定して出力する

1<?php
2
3/**
4 * printf 関数の使用例
5 *
6 * 指定されたフォーマットに従って文字列を出力します。
7 */
8
9// 文字列と数値をフォーマットして出力
10$name = "Taro";
11$age = 30;
12$formattedString = sprintf("My name is %s, and I am %d years old.", $name, $age);
13echo $formattedString . PHP_EOL; // My name is Taro, and I am 30 years old.
14
15// 浮動小数点数をフォーマットして出力
16$price = 19.99;
17printf("The price is %.2f dollars.\n", $price); // The price is 19.99 dollars.
18
19// 複数の値をフォーマットして出力
20$quantity = 5;
21$item = "apple";
22printf("I have %d %ss.\n", $quantity, $item); // I have 5 apples.
23
24// 16進数で出力
25$number = 255;
26printf("The hexadecimal value is %X.\n", $number); // The hexadecimal value is FF.
27
28// パーセント記号を出力
29$percentage = 85;
30printf("The success rate is %d%%.\n", $percentage); // The success rate is 85%.
31?>

printf関数は、PHPで指定されたフォーマットに基づいて文字列を出力するために使用されます。第一引数$formatは、出力形式を指定する文字列です。この文字列には、プレースホルダーと呼ばれる特殊な記号が含まれており、...$valuesで指定された値が対応するプレースホルダーの位置に埋め込まれます。

例えば、%sは文字列、%dは整数、%fは浮動小数点数をそれぞれ表します。%.2fのように小数点以下の桁数を指定することも可能です。%Xは数値を16進数で出力します。パーセント記号を出力したい場合は、%%と記述します。

サンプルコードでは、sprintf関数と組み合わせて、フォーマットされた文字列を変数に格納してからechoで出力する方法も示されています。sprintf関数はprintf関数と似ていますが、出力を直接行うのではなく、フォーマットされた文字列を返します。printf関数は出力された文字列の長さを整数値で返します。PHP_EOLは、改行文字を表す定義済みの定数で、プラットフォームに依存しない改行を行う際に便利です。printf関数を使うことで、変数の値を埋め込んだり、数値の表示形式を整えたりして、見やすく、より分かりやすい出力を実現できます。

printf関数は、指定したフォーマットに従って文字列を出力します。フォーマット文字列には、%で始まる変換指定子が含まれており、これらが対応する引数の値に置き換えられます。例えば、%sは文字列、%dは整数、%fは浮動小数点数を意味します。変換指定子と引数の型が一致しない場合、予期せぬ結果になる可能性がありますので注意が必要です。また、%記号自体を出力するには、%%と記述する必要があります。sprintf関数と異なり、printf関数は直接出力を行うため、出力先を制御したい場合はsprintfの使用を検討してください。引数の順番も重要で、フォーマット文字列の指定順と引数の順序が一致している必要があります。

PHP printf 関数で改行して出力する

1<?php
2
3/**
4 * printf 関数を使った改行付きの出力例
5 */
6function printfWithNewline(): void
7{
8    $name = "太郎";
9    $age = 30;
10
11    // 名前と年齢を改行付きで出力
12    $result = printf("名前: %s\n年齢: %d\n", $name, $age);
13
14    // printf は出力した文字数を返す
15    echo "出力文字数: " . $result . "\n";
16}
17
18// 関数の実行
19printfWithNewline();
20
21?>

PHPのprintf関数は、指定されたフォーマット文字列に従って引数を整形し、結果を出力する関数です。この関数を使うことで、変数の値を埋め込んだ文字列を簡単に生成し、画面やファイルに出力できます。

printf関数の第一引数には、フォーマット文字列を指定します。フォーマット文字列には、プレースホルダーと呼ばれる特殊な記号が含まれており、%s(文字列)、%d(整数)などの種類があります。これらのプレースホルダーは、続く引数の値で順番に置き換えられます。例えば、printf("名前: %s 年齢: %d", $name, $age)というコードは、$nameと$ageの値をフォーマット文字列に埋め込んで出力します。

サンプルコードでは、printfWithNewline関数内でprintf関数を使って、名前と年齢を改行付きで出力しています。\nは改行文字を表し、出力結果を読みやすくするために使用されています。

printf関数の戻り値は、出力した文字数です。サンプルコードでは、$result = printf("名前: %s\n年齢: %d\n", $name, $age)のように、戻り値を変数に格納し、その後echo "出力文字数: " . $result . "\n";で出力しています。これによって、printf関数が実際に何文字出力したかを確認できます。printf関数は、複雑な文字列のフォーマットや、数値の書式設定など、多様な出力形式に対応できる便利な関数です。

printf関数は、指定されたフォーマット文字列に従って引数を整形し、結果を出力します。改行を行う場合は、フォーマット文字列に\nを含める必要があります。%sは文字列、%dは整数を表すプレースホルダです。printfは実際に出力された文字数を返しますので、変数に格納して利用することも可能です。ただし、出力先は標準出力である点に注意してください。もしWebブラウザに出力する場合は、<br>タグを改行コードとして使用するか、PHPの設定で出力バッファリングを適切に設定する必要がある場合があります。また、フォーマット文字列と引数の型が一致しない場合、予期せぬ結果になる可能性があるため、注意が必要です。

関連コンテンツ

【PHP8.x】printf関数の使い方 | いっしー@Webエンジニア