Warum wird ein PHP-Array geändert, wenn seinem Element eine Referenz zugewiesen wird?

Wenn Sie das Element eines Arrays neu zuweisen, wird der Inhalt des Arrays geändert:

$arr = array(100, 200);
var_dump($arr);
/* shows:
array(2) {
  [0]=>
  int(100)  // ← ← ← int(100)
  [1]=>
  int(200)
}
*/

$r = &$arr[0];
var_dump($arr);
/* shows:
array(2) {
  [0]=>
  &int(100)  // ← ← ← &int(100)
  [1]=>
  int(200)
}
*/

Live laufen. (Zend Engine wird gut funktionieren, während HHVM "Prozess mit Code 153 beendet" anzeigt.)

Warum wird das Element geändert?

Warum sehen wir?&int(100) anstattint(100)?

Das scheint total bizarr. Was ist die Erklärung für diese Kuriosität?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage