$a = [ "a"=>["cc"=>11] , "b"=>["cc"=>22] ];echo "\n".$a['a']["cc"].",".$a['b']["cc"];$i=1;//(1)拷貝,$a無變化foreach($a as $k=>$v) { $v['cc']=$i; $i+=1;}echo "\n".$a['a']["cc"].",".$a['b']["cc"];//(2)引用foreach($a as $k=>&$v) { $v['cc']=$i; $i+=1;}echo "\n".$a['a']["cc"].",".$a['b']["cc"];//(3)拷貝foreach($a as $k=>$v) { $a[$k]["cc"]=$i; $i+=1;}echo "\n".$a['a']["cc"].",".$a['b']["cc"];
預設foreach是拷貝數組,需要兩倍的記憶體,那效能是不是會很低啊?為什麼要這麼設計呢
如果數組非常大的情況下,是不是用引用方式會好一些?各自有什麼優缺點?
回複內容:
$a = [ "a"=>["cc"=>11] , "b"=>["cc"=>22] ];echo "\n".$a['a']["cc"].",".$a['b']["cc"];$i=1;//(1)拷貝,$a無變化foreach($a as $k=>$v) { $v['cc']=$i; $i+=1;}echo "\n".$a['a']["cc"].",".$a['b']["cc"];//(2)引用foreach($a as $k=>&$v) { $v['cc']=$i; $i+=1;}echo "\n".$a['a']["cc"].",".$a['b']["cc"];//(3)拷貝foreach($a as $k=>$v) { $a[$k]["cc"]=$i; $i+=1;}echo "\n".$a['a']["cc"].",".$a['b']["cc"];
預設foreach是拷貝數組,需要兩倍的記憶體,那效能是不是會很低啊?為什麼要這麼設計呢
如果數組非常大的情況下,是不是用引用方式會好一些?各自有什麼優缺點?