Anatol: Jeden existierenden Wert eines Arrays bearbeiten

Beitrag lesen

Hallo!

Ich vermute zwar, dass eine Frage in diese Richtung schon einmal gestellt wurde, ich habe im Archiv aber leider nichts finden können. Darum geht´s:

Ich möchte in einem mehrdimensionalen Array jeden existierenden Wert einzeln bearbeiten und mit geänderten Werten wieder abspeichern. Der Array soll auch "unvorhersehbare" Formen annehmen können. Damit meine ich, dass er in Länge und Dimensionalität völlig unterschiedlich ausfallen kann.

  • Ich bin so vorgegangen, dass ich den Array an eine Funktion übergebe.
  • Diese überprüft, ob es sich auch wirklich um einen Array handelt.
  • Wenn nein, dann handelt es sich um eine Variable, die einen Wert enthält.
  • Diesen Wert bearbeite ich dann (in untenstehendem Beispiel mit der Funktion htmlentities(), die mit Arrays ja gar nicht funktionieren würde).
  • Handelt es sich um einen Array, dann rufe ich dieselbe Funktion nochmals aus sich selbst auf.

Ich schätze genau hier liegt irgendwo das Problem: Ich erzeuge eine Endlosschleife, aber ich erkenne nicht, warum.

Wenn es irgendeine Andere Möglichkeit gibt, alle Werte eines mehrdimensionalen Arrays durchzugehen, dann wäre das sicher auch die sauberere Lösung. Ich habe aber nichts gefunden. Kennt jemand eine Möglichkeit?

Ansonsten wäre ich auch sehr dankbar dafür, wenn mir jemand bei meiner Endlosschleife auf die Sprünge helfen würde. Im Anschluß befindet sich ein vereinfachtes Script, das das Problem schildern sollte: Alle Werte des Arrays sollen in diesem Beispiel in html entities geändert oder zumindest dahingehend überprüft werden:

<?
############################################################

Achtung: Diese Funktion erzeugt eine Endlosschleife!!!!!

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

function processArray($array) {
if ( is_array($array) ) {
  for ( $i = 0; $i < count($array); $i++ ) {
   $array[$i] = processArray($array[$i]);
  }
} else {
  $array = htmlentities($array);
}
return $array;
}

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

// ich erstelle einen mehrdimensionalen "unberechenbaren" Array:
$test = array (
"A" => array (
  1 => array (
   "eins"  => "Umlaut Ä",
   "zwei"  => "Umlaut Ö",
   "drei"  => "Umlaut Ü"
  ),
  2 => array (
   "irgend" => "Straße",
   "etwas"  => "Müsli",
   "etc"  => "Öl",
   "blabla" => "Blindtext, ähm ...",
   1 => array (
    "name"  => "irgendein Inhalt, äöüß"
   ),
  ),
),
"B" => 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:
$test = processArray($test);

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

?>

Was mache ich falsch?
Vielen Dank schonmal.

Schöne Grüße
Anatol Bogun