$arr = array(array(array()));
foreach($arr as $subarr)
{
 $subarr[] = 1;
}
var_dump($arr);
Output:
array(1) {
  [0]=>
  array(1) {
    [0]=>
    array(0) {
    }
  }
}
But for object,it's reference:
class testclass {
}
$arr = array(new testclass());
foreach($arr as $subarr)
{
 $subarr->new = 1;
}
var_dump($arr);
Output:
array(1) {
  [0]=>
  object(testclass)#1 (1) {
    ["new"]=>
    int(1)
  }
}
Why treat array different from object?