例えば、『3:みかん』というような書き方をしたいとき下記のように、 ドットで繋ぐ方法もありますが、長くなると分かりにくくなります。
echo $int . '番目:' . $string . PHP_EOL;
sprintf()を使って『◯番目:xxx』というフォーマットにすることができます。
$fruit = ['りんご','みかん','バナナ']; for($i = 1; $i <= count($fruit); $i++){ echo sprintf("%d番目:%s", $i, $fruit[$i-1]) . PHP_EOL; } //1番目:りんご //2番目:みかん //3番目:バナナ
sprintf — フォーマットされた文字列を返す
指定子を使って引数を当てはめます。
- % : 指定子を使う直前に記述
- d : 引数は整数として扱われ、(符号付き)10進数値として表現されます。
- s : 引数は文字列として扱われ、文字列として表現されます。
その他は下記を参照。
例えば、こんな文字列の生成も可能です。 『〇〇に■匹の猿がいます。』
$num = 3; $location = "動物園"; $format = '%2$s に %1$d 匹の猿がいます。'; echo sprintf($format, $num, $location);
ここで注意したいのは、sprintfの中のコード(引数)と順番が一致していないので、 フォーマット文字列のほうで指示を行う方が望ましいでしょう。
『sprintf($format, $num, $location)』$locationの方を先に使う場合 『%2$s に %1$d 匹の猿がいます。』と$format内で順番指定しましょう。