文字列をフォーマットし、直接出力なしで文字列を返すために使用します。フォーマットされた文字列は、変数に割り当てたり、他の処理に使用したりできます。
fprintf
文字列をフォーマットして、指定されたファイルストリーム(ファイル、標準出力など)に結果を書き込むために使用されますが、文字列を返さず、記述された文字の数を返します。
// sprintf 文法
string sprintf(string $format, mixed ...$values)
// fprintf 文法
int fprintf(resource $stream, string $format, mixed ...$values)
側面 | sprintf | fprintf |
---|---|---|
返品値 | フォーマットされた文字列を返します | 書かれた文字の数を返します |
出力方法 | 直接出力ではなく、文字列のみを返します | フォーマットされた文字列を指定されたファイルストリームに書き込みます |
シナリオを使用します | 文字列をフォーマットして後で使用する必要があります(ストレージ、処理、出力) | フォーマットされたコンテンツをファイルまたは出力ストリームに直接書き込む必要があります |
パラメーターの数 | フォーマット文字列 +変数 | ファイルストリームリソース +フォーマット文字列 +変数 |
アプリケーションスコープ | 広く、文字列をフォーマットする必要がある機会 | ファイル操作、ログライティング、標準出力 |
<?php
$name = "Alice";
$age = 30;
$formatted = sprintf("Name: %s, Age: %d\n", $name, $age);
echo $formatted;
?>
このコードでは、 Sprintfはフォーマットされた文字列をフォーマット済みに返し、 Echoを介して出力します。
<?php
$file = fopen("gitbox.net/uploads/user.txt", "w");
if ($file) {
$name = "Bob";
$age = 25;
fprintf($file, "Name: %s, Age: %d\n", $name, $age);
fclose($file);
} else {
echo "ファイルを開くことができません\n";
}
?>
ここで、 FPRINTFはフォーマットされた文字列をファイルストリーム$ファイルに直接書き込みます。
Sprintfに適用可能なシナリオ:
変数に値の割り当て、文字列スプライシングの実行、他の機能に渡すなど、文字列を直接フォーマットする必要はありません。
出力またはストレージの前に文字列を動的に構築する必要があります。
fprintfはシナリオに適しています。
フォーマットされた文字列は、ログファイルなどのファイルまたはストリームに直接記述する必要があります。
コマンドラインスクリプトで一般的に使用される標準出力(端子やコンソールなど)に出力する必要があります。
2つの違いを理解することは、PHPでのプログラミング時に文字列のフォーマットと出力をより効果的に処理し、リソースの不必要な無駄とコードの複雑さを回避するのに役立ちます。