Lieber Willi H.,
sprintf('Hallo %1$s, meine Name ist %2$s.', $deinName, $meinName);
der getriebene Aufwand schon erheblich höher ist. Das macht einen dann schon nachdenklich, wenn man sich um Sinn und Unsinn in Programmiersprachen überhaupt noch interessiert.Also vermeiden, wo es möglich ist?
machst Du Dir Gedanken über Sinn und Unsinn? Wenn nicht, dann brauchst Du es nicht vermeiden.
Sieh es einmal so: Wenn die Reihenfolge Deiner Parameter mit der Reihenfolge der ihnen zugedachten Platzhalter übereinstimmt, dann machst Du das mit "%s" bzw. "%d". Das wird wohl in den allermeisten Fällen so sein.
Solltest Du Dein Script für mehrere Sprachen bauen, sodass die zusammen zu bauenden Strings die Parameter in verschiedener Reihenfolge brauchen könnten, dann benutzt Du eben "%1$s" bzw. "%1$d". Beispiel:
$message = array(
'de' => 'Heute ist %1$s, der %3$d. %2$s %4$d.',
'en' => 'Today\'s date: %1$s, %2$d %3$s %4$d'
);
$out = sprintf($message[$lang], $weekday[$lang], $month[$lang], $day, $year);
Ich benutze in fast allen Fällen "%s" und "%d", nur dann, wenn ich einen Parameter mehrfach im String einfügen möchte, dann benutze ich "%1$s". Beispiel: $xml = sprintf('<%1$s>%2$s</%1$s>', $tagName, $data);
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)