2 Stimmen

Effizientere Methode, um ein Array in PHP zu durchlaufen

Ich habe diese Methode erstellt, um jeden Wert in einem Array zu ändern. Ich bin noch ziemlich neu in PHP, also denke ich, dass es einen effizienteren Weg geben sollte, um dies zu tun.

Hier ist mein Code:

foreach($my_array as $key => $value)
{
     $my_array[$key] = htmlentities($value);
}

Gibt es einen besseren Weg, dies zu tun?

Vielen Dank im Voraus.

8voto

Simon Punkte 37405

Du wärst wahrscheinlich besser dran mit array_map

$my_array = array_map( 'htmlentities' , $my_array);

5voto

Galen Punkte 29592

Sie können auf das Array verweisen und es ändern

foreach ($array as &$value) {
    $value = $value * 2;
}

3voto

Rob Hruska Punkte 114761

Wenn Sie eine Funktion auf den Wert anwenden müssen und ihn dem Wert neu zuweisen müssen, ist Galen's Antwort eine gute Lösung. Sie könnten auch array_walk() verwenden, obwohl es nicht so einfach zu lesen ist wie eine schöne, einfache Schleife.

Wenn Sie beispielsweise nur einem Element im Array einen primitiven Wert zuweisen müssen, funktioniert Folgendes.

  • Wenn Ihre Schlüssel numerisch sind, können Sie array_fill() verwenden:

    array_fill(0, sizeof($my_array), "test");
  • Wenn Sie ein assoziatives Array verwenden, können Sie wahrscheinlich array_fill_keys() mit etwas Ähnlichem verwenden:

    array_fill_keys(array_keys($my_array), "test");

2voto

VolkerK Punkte 93746

Wenn Sie $value als eine Referenz (&$value) markieren, wird jede Änderung, die Sie an $value vornehmen, das entsprechende Element in $my_array beeinflussen.

foreach($my_array as $key => &$value)
{
   $value = "test";
}

zum Beispiel

$my_array = array(1,2,3,4,5,6);
foreach($my_array as &$value)
{
  $value *= 5;
}
echo join($my_array, ', ');

gibt aus

5, 10, 15, 20, 25, 30

(Und es gibt auch array_map(), wenn Sie das originale Array behalten möchten.)

1voto

Blair McMillan Punkte 5289

Sie könnten array_fill verwenden, beginnend bei 0 und bis zur Länge count($my_array). Ich bin mir aber nicht sicher, ob das besser ist.

Bearbeiten: Rob Hruskas array_fill_keys code ist wahrscheinlich besser, je nachdem, wie Sie "besser" definieren (Geschwindigkeit, Standards, Lesbarkeit usw.).

Bearbeiten2: Da Sie Ihre Frage jetzt bearbeitet haben, sind diese Optionen nicht mehr geeignet, da der ursprüngliche Wert geändert werden muss, nicht komplett geändert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X