molily: Multibyte String Functions

Beitrag lesen

Hallo,

$search = array('ä', 'Ä', 'ü', 'Ü', 'ö', 'Ö', 'ß');
foreach ($search as &$character) {
$character = utf8_encode($character);
}

Super, danke. Aber warum verwendest du das & vor $character ?

Weil sonst der Array nicht geändert wird. Bei einer foreach-Schleife wird für gewöhnlich der Wert des jeweiligen Elements kopiert und hier in $character gespeichert. Wenn dann $character geändert wird, wird nur eben diese Variable geändert. Das Array-Element an sich bliebe unangetastet. Durch das &$character ist $character eine Referenz (http://de3.php.net/manual/de/language.references.php) auf das jeweilige Array-Element. Wenn dann $character geändert wird, ändert sich auch das Array-Element.
Für gewöhnlich durchläuft man Arrays mit einer for-Schleife:
for ($i = 0; $i < count($search); i++)
   $search[$i] = utf8_encode($search[$i]);
Die besagte foreach-Schleife ist eine elegante Variante, die zumindest äußerlich ohne Zählvariable auskommt.

Mathias