語法:array_diff(陣列1,陣列2[,陣列3…])
array_diff($arr1,$arr2),比較$arr1的元素中哪些是$arr2所沒有的,並且傳回這些沒有的元素,如果$arr1、$arr2對調參數位置產生的結果可能不一樣。不必考慮索引順序。
用來記錄人生的點點滴滴,包括學習記錄、工作、生活、觀察……
語法:array_diff(陣列1,陣列2[,陣列3…])
array_diff($arr1,$arr2),比較$arr1的元素中哪些是$arr2所沒有的,並且傳回這些沒有的元素,如果$arr1、$arr2對調參數位置產生的結果可能不一樣。不必考慮索引順序。
語法:debug_backtrace()
功用:傳回引入檔案(物件)層次的陣列。
必須將此函數寫在被引入的檔案(物件)裡才會有內容,若是直接執行寫有此函數的檔案(物件),則傳回空陣列。因此,通常此函數是用來判斷檔案被叫用時是否為被引入的狀態。傳回的陣列裡每一個元素代表引入檔案過程裡的每一個檔案,而且也是以陣列的形式存在,可能的文字索引 有:function、line、file、class、object、type、args。如果使用object當作陣列索引,傳回的是可以實際操作的物件。
請見:http://www.php.net/manual/en/function.debug-backtrace.php
語法:strtotime(時間字串[,時間戳記])
功能:將有時間意義的英文字串轉換為時間戳記。若加上時間戳記參數,則代表要以這個時間戳記為基準來換算日期。使用範例如下: 閱讀全文〈函數strtotime〉
語法:key(陣列變數)
函數key,傳入參數是陣列,傳回值是陣列的鍵,也就是索引,如果多元素的陣列,傳回的鍵值就是陣列,如果只是單一元素陣列,那麼傳回的僅只是該元素的索引值。所以在使用函數key的傳回值時還要確認值的型態,以便使用適當的方式來操作。
今天把月曆寫成函數,當作一個可以放置內容的容器。這樣一來,有需要搭配月曆並且在裡面放置內容的話就可以很容易使用了,也不用再重寫一次月曆。其實寫一次月曆還挺費事的,但寫成函數之後,只要把資料以「日期」為索引做成陣列再丟到函數處理就可以了,這樣的作法有點像物件的寫法,也大大減少了程式碼。
今天以遞增/遞減運算子操作一個不存在矩陣的元素,結果php出現錯誤的訊息顯示不支援運算子的使用。回到家裡測試,直接使用 $tmp[1][‘uid’]++; 之類的敘述並沒有出現錯誤,改以 $tmp[‘a’][‘b’]++; 也沒有出現錯誤,接著再以 $tmp[$a][$b]++; 仍然沒有出現錯誤。所以我可能應該認為這個問題是php版本太舊造成的。家裡的php是5.2.6,公司是4.9.x。
今天遇到了php變數名稱重複的問題,因為變數名稱相同,導致使用的switch出現錯誤。
這個狀況一來是提醒自己使用變數名稱應該要注意,二來也點出了一個問 題-就是如果一個頁面幾百行,幾千行,像php這種直譯式,又不需事先定義變數的程式語言,很可能導致變數的命名產生重複,勢必得小心避免。避免方式: 閱讀全文〈遭逢變數名稱重複的困擾〉
語法:sprintf(格式字串,變數[,變數…])
原本以為格式字串裡所安排變數放置的位置,後面的變面也必須按順序放進去,不過若採用%1$s這種格式來撰寫格式字串,其中的1$代表是後面的變數參數的位置(順序),而$s則代表是字串變數,也就是原來的s,前面的%仍是不可省略。
今天寫行政系統,排假功能產生了一個問題。因為早晚班是會變動的,可能這個月是早班,下個月就變成晚班了。可是按目前的這種寫法,早晚班是跟著使用者資料在同一個資料表,就只有這一份,所以當使用者下個月是晚班,但在排下個月假當時的班還是早班,這樣就會導致結果誤判。所以像這種情況,班別應該要跟著假表一樣,每個月都有一 份,這樣才能夠找到正確的資料來判斷。