note 108687 modified in class.arrayobject by danbrown
| From: | danbrown@php.net | Date: | Thu, 17 May 2012 18:18:34 +0000 |
| Subject: | note 108687 modified in class.arrayobject by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-188041@lists.php.net to get a copy of this message | ||
Please note, that there's another potential "gotcha" in using ArrayObject
like regular array. Objects are reference types and arrays are value types. Consider following piece
of code: <?php class MyArrayObject
extends ArrayObject { 	protected $data =
array(); 	public function offsetGet($name)
{ 		return
$this->data[$name]; 	} 	public function
offsetSet($name, $value) { 		$this->data[$name] =
$value; 	} 	public function offsetExists($name)
{ 		return
isset($this->data[$name]); 	} 	public
function offsetUnset($name)
{ 		unset($this->data[$name]); 	} } function
my_array_modify($data) { //note - not reference
&$data 	$data['b'] =
2; } $regularArray =
array(); $arrayObject = new
MyArrayObject(); $regularArray['a'] =
1; $arrayObject['a'] =
1; my_array_modify($regularArray); my_array_modify($arrayObject); var_dump($regularArray['b']);
// PHP Notice: Undefined index: b var_dump($arrayObject['b']); //
int(2) ?>
--was--
Please note, that there's another potential "gotcha" in using ArrayObject like
regular array. Objects are reference types and arrays are value types. Consider following piece of
code:
<?php
class MyArrayObject extends ArrayObject
{
protected $data = array();
public function offsetGet($name) {
return $this->data[$name];
}
public function offsetSet($name, $value) {
$this->data[$name] = $value;
}
public function offsetExists($name) {
return isset($this->data[$name]);
}
public function offsetUnset($name) {
unset($this->data[$name]);
}
}
function my_array_modify($data) { //note - not reference &$data
$data['b'] = 2;
}
$regularArray = array();
$arrayObject = new MyArrayObject();
$regularArray['a'] = 1;
$arrayObject['a'] = 1;
my_array_modify($regularArray);
my_array_modify($arrayObject);
var_dump($regularArray['b']); // PHP Notice: Undefined index: b
var_dump($arrayObject['b']); // int(2)
http://php.net/manual/en/class.arrayobject.php