以下**輸出的結果分別是?
$a = ['one', 'two', 'x'=>'y', 'a'=>'long'];
$val = 'si';
foreach ($a
as &$val)
var_dump($val);
--------------------
$a = ['one', 'two', 'x'=>'y', 'a'=>'long'];
$val = 'si';
foreach ($a
as &$val)
$val = 'sijiao';
$val = $val . 'mao';
var_dump($val);
答案測一下就可以得到了~
原因是: foreach在迴圈結束後仍然會保留最後乙個val值,為防止出現意想不到的情況、可以unset掉
另外:可以思考乙個問題~
function
one($arr)
}function
two($arr)
}$a = array( 'a', 'b', 'c' );
one($a);
two($a);
誰的效率會更高、重要的是為什麼?
one函式:
1. 將乙個陣列作為引數、本身是非引用傳遞、所以陣列知道不用考慮原陣列的修改
2. 在foreach時、非引用傳遞、無需修改外部陣列,它會複製陣列的內部迭代偏移狀態(很小的數字)不會有效能或記憶體占用問題
3. 它使用迭代偏移來遍歷陣列的所有鍵值對,當前偏移量的值分配給乙個$val的變數
4.$val 是否複製該值? 不會、、是重新利用記憶體中現有值,除非發生修改、否則不會建立任何副本、修改時會在記憶體中分配乙個新的zval、賦值給$val
two函式
1. 函式引數本身不允許修改外部引數
2.foreach時傳入引用&、php為保證外部引數的值、只能重新複製乙份,所以在開始迭代前就完整的複製了乙份原陣列
思考三:
$arr = range(0,100000);
for($i = 0; $i
< 1000; $i++)
}var_dump($val);
------------
$arr = range(0,100000);
for($i = 0; $i
< 1000; $i++)
}var_dump($val);
得到的val值分別是多少?
參考:100001 和 100100
關於SpringIOC的一些思考
ioc是 依賴倒置原則 的乙個特例,說其是特例,就是說其具有 依賴倒置原則 的性質。依賴倒置原則強調的兩點是 上層模組和下次模組都依賴於抽象,二者之間通過這種抽象的東西聯絡在一起 具體可以依賴於抽象,而抽象不能依賴於具體。我認為spring提倡的 基於介面程式設計 就是為了遵循 依賴倒置原則 其中所...
關於sizeof 的一些思考
今天面試被問到sizeof,回來整理一下。1 定義 sizeof是c c 中的乙個操作符 operator 作用就是返回乙個物件或者型別所佔的記憶體位元組數。msdn上的解釋為 the sizeof keyword gives the amount of storage,in bytes,assoc...
關於創意的一些思考
2016.12.2 22.20 bgm 古風 這週三的下午 27號 難得去聽了乙個講座 關於以創意為核心的動漫產業鏈價值的最大化 其實還是 由於這個話題吸引了我,演講的是上海美影的老廠長,由於時間的關係,給我們講述了在過去幾年美影廠針對傳統 動畫人物的產業鏈的發展以及注重要中國特色動漫。其實,在這幾...