foreach in PHP
-
Hallo zusammen, ich habe eine kleine, aber wichtige Frage:
$arrFld = Array('lkjlkj','lkjlkj','lkjlkj'); foreach($arrFld as $fld) $arrFld = 'Hallo Welt';
Am Ende steht aber immer noch der Anfangswert drinnen, da Inhalte ders Array jeweils kopiert werden. Wie kann ich das verhirnden?
Vielen Dank
-
Janus schrieb:
Hallo zusammen, ich habe eine kleine, aber wichtige Frage:
$arrFld = Array('lkjlkj','lkjlkj','lkjlkj'); foreach($arrFld as $fld) $arrFld = 'Hallo Welt';
Am Ende steht aber immer noch der Anfangswert drinnen, da Inhalte ders Array jeweils kopiert werden. Wie kann ich das verhirnden?
Vielen Dank
Die einzelnen Arrayelemente werden folgendermaßen in einen String verwandelt und ausgegeben:
foreach($Array as $key => $content) { echo "Das Element mit dem Schlüssel ".$key." hat den Wert ".$content."<br />"; }
Einem Arrayfeld wird wie folgt ein Wert zugewiesen:
$array = array("wert", "wert", "wert", "wert", "wert"); for ($i = 0; $i < count($array); ++$i) { $array[$i] = "hallo welt"; }
-
ich löse das immer so,
foreach($Array as $key => $content) { $Array[$key] = 'Hallo Welt'; }
hoffe das phpforech macht nicht wiklich eine copie, sonst wäre ja das normale for schneller!
-
Gerard schrieb:
hoffe das phpforech macht nicht wiklich eine copie, sonst wäre ja das normale for schneller!
es macht COW
aber foreach ist seit php 4.10 und php 5 schneller als forseit php 5 kann man
foreach($arr as key => &value)
verwendenund schon ist $value eine referenz
kopieren ist in PHP 4 oft schneller als referenzen zu nehmen, in PHP 5 sind referenzen schneller.
Edit:
bei for() bitte immer dieses idiom verwenden:for($i=0, $c=count($arr); $i<$c; ++$i)
weil das wiederholte count() lahm ist.