Php: 1 + 2 + 3 + 4 = 9?

Hallo,

ich sehe das als „fun with references“:<?php $arr = array(1, 2, 3, 4);
foreach($arr as &$p) { }; # loop over array, do nothing

echo "Sum is: ", SumAccArray($arr, &$p), „\n“; # sum up array once
echo "Sum is: ", SumGetArray($arr, &$p), „\n“; # sum up array again

function SumAccArray( &$a, &$r ) { foreach($a as&$r) $sum += $r; return $sum; }
function SumGetArray( &$a, &$r ) { foreach($a as $r) $sum += $r; return $sum; }

?>Einmal kommt 9, einmal 10 raus (Summation). Tipps?

Grüße

CMБ

Hallo,

ich sehe das als „fun with references“:<?php :
$arr = array(1, 2, 3, 4);
foreach($arr as &$p) { }; # loop over array, do nothing

… schnipp …

Ich weiss nicht, welche Tipps Du erwartest, aber bereits die
Aussage ‚do nothing‘ in der zweiten Zeile trifft nicht zu.

Der Durchlauf der leeren foreach-Schleife ‚stellt‘ den Inhalt des
Arrays auf References um (läßt sich wunderschön mit var_dump() ansehen):

$arr = array(1, 2, 3, 4);
var_dump($arr);
foreach($arr as &$p) { };
var_dump($arr);

Was die beiden folgenden Funktionen mit dem Array machen, läßt sich
ebenfalls schön beobachten, wenn man sich das Array während der
Schleifendurchläufe beobachtet.

Das zu beobachtende Verhalten entspricht der Dokumentation
http://www.php.net/manual/en/language.references.php

Viele Grüße
Thomas