Anatol: Jeden existierenden Wert eines Arrays bearbeiten

Beitrag lesen

Hallo Andreas, hallo $name // dedlfix?

Vielen Dank,

ihr habt mir sehr geholfen. Nachdem ich mich wie dedlfix vorgeschlagen hat mit "foreach" beschäftigt habe, bin ich im Grunde auf dieselbe Lösung gekommen, wie Andreas.

Andreas: Beachte dass hierbei jeweils keine Kopie von $test verwendet wird, sondern direkt die "originalen" Daten in $test verändert werden.

Danke für diesen Hinweis. Ich habe nicht gewußt, dass ich mit "&" eine Referenz an die Variable übergeben kann, und die Funktion somit den Orginalwert verändert.
[Link:http://de.php.net/manual/en/functions.arguments.php#functions.arguments.by-reference]
Muss ich bisher überlesen haben. Das ist aber sehr nützlich.

Also vielen Dank! Schöne Grüße!
Anatol

Zur Ergänzung: Folgendes Script funktioniert dann:

<?
############################################################
// Diese Beispielfunktion wandelt alle Werte eines Arrays in HTML entities um

function processArray(&$item){
if (is_array($item)) {
  foreach ($item as $key => $value) {
   $item[$key] = processArray($value);
  }
} else {
  $item = htmlentities($item);
}
return $item;
}

############################################################

// ich erstelle einen mehrdimensionalen Array:
$test = array (
0 => array (
  0 => array (
   "eins"  => "Umlaut Ä",
   "zwei"  => "Umlaut Ö",
   "drei"  => "Umlaut Ü"
  ),
  1 => array (
   "irgend" => "Straße",
   "etwas"  => "Müsli",
   "etc"  => "Öl",
   "blabla" => "Blindtext, ähm ...",
   0 => array (
    "name"  => "irgendein Inhalt, äöüß"
   ),
  ),
),
1 => array (
  1 => array (
   "eins"  => "Umlaut Ä, schonwieder",
   "zwei"  => "Umlaut Ö, egal was",
   "drei"  => "Umlaut Ü, Inhalt!"
  ),
),
);

echo "<hr>vorher:<hr><pre>";
print_r ($test);
echo "</pre>";

// Funktion aufrufen:
processArray($test);

echo "<hr>nachher:<hr><pre>";
print_r ($test);
echo "</pre>";

?>