Longhorn PHP 2025 - Speakers and Schedule Announced!

Voting

: two plus seven?
(Example: nine)

The Note You're Voting On

Jason Steelman
5 years ago
Within a class, passing array elements by reference which don't exist are added to the array as null. Compared to a normal function, this changes the behavior of the function from throwing an error to creating a new (null) entry in the referenced array with a new key.

<?php

class foo {
public
$arr = ['a' => 'apple', 'b' => 'banana'];
public function
normalFunction($key) {
return
$this->arr[$key];
}
public function &
referenceReturningFunction($key) {
return
$this->arr[$key];
}
}

$bar = new foo();
$var = $bar->normalFunction('beer'); //Notice Error. Undefined index beer
$var = &$bar->referenceReturningFunction('beer'); // No error. The value of $bar is now null
var_dump($bar->arr);
/**
[
"a" => "apple",
"b" => "banana",
"beer" => null,
],
*/

?>
This is in no way a "bug" - the framework is performing as designed, but it took careful thought to figure out what was going on. PHP7.3

<< Back to user notes page

To Top