PHP 板


LINE

看板 PHP  RSS
: 因為我之前是寫Java的 Java 算是強型別的程式語言 (strong type) 而 PHP 則是弱型別 (weak type) 二者不太能互相比較 : 但是在PHP內 : 變成是要直接給變數然後給值初始化 : 如果沒有給值就等於null : $x; //這樣有寫跟沒寫一樣,值也是null : $x = 10; //正常 寫個程式做檢查,這邊先把 error_reporting 打開: <?php error_reporting(E_ALL); var_dump($x); 執行後會出現訊息: PHP Notice: Undefined variable: x in /home/johnroyer/tmp/qwe.php on line 5 NULL 所以其實 PHP 是會檢查變數是否有被初始化的 只是即使沒有被初始化也是可以照常拿來使用 .... 然後可能就踩到雷 XD 例如拿沒有初始化的變數去其他函式使用: $list = [1, 2, 3]; array_merge($list, $undefined); 語法上來講沒有任何問題 但是執行的時候就會有 runtime error : PHP Warning: array_merge(): Argument #2 is not an array 以個人經驗 如果希望程式可以避開 runtime error 的話 建議會拿來做判斷、運算的變數最好都先初始化 並且指定正確的資料型態 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.229.31
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1510720665.A.045.html ※ 編輯: JohnRoyer (211.72.229.31), 11/15/2017 12:46:11
1F:推 ericdoctor: 謝謝你的回文 我理解強型態與弱型態語言,因為本身是F 11/15 15:53
2F:→ ericdoctor: 2E,所以也有寫js,只是不太懂在PHP,宣告並賦值的行 11/15 15:53
3F:→ ericdoctor: 為應該怎麼用語言描述 11/15 15:53
4F:→ ericdoctor: 原來要把error_reporting打開才會看到error,謝謝告知 11/15 15:57
5F:→ ericdoctor: ,我也有爬文到相關的用法是說要使用前要先初始化,我 11/15 15:57
6F:→ ericdoctor: 也認同這一點,但是不知道有沒有建議的寫法(比如說我 11/15 15:57
7F:→ ericdoctor: 今天想用整數要先賦的值是0,想用字串就要先給空字串) 11/15 15:57
8F:→ ericdoctor: 或是有什麼關鍵字或資源可以跟原po請教 11/15 15:57
9F:→ MOONRAKER: 當然是要當什麼用就設什麼啊 初值設0.0下面當字串用 11/15 16:03
10F:→ MOONRAKER: 你是參加IOCCC嗎 11/15 16:03
11F:推 ericdoctor: 我具體講一下我的問題好了 11/15 18:43
12F:→ ericdoctor: 不好意思 這邊用Java表示 11/15 18:43
13F:→ ericdoctor: 有時候會這樣寫 11/15 18:43
14F:→ ericdoctor: int x; 11/15 18:43
15F:→ ericdoctor: if(條件){ x =10;}else if(){ x=11;} 11/15 18:43
16F:→ ericdoctor: 但是php只要 11/15 18:43
17F:→ ericdoctor: if(條件){ $x =10;}else if(){ $x=11;} 11/15 18:43
18F:→ ericdoctor: 揪能正常使用,不知道這樣的寫法是好的還是不好的 11/15 18:43
19F:→ tkdmaf: 樓上,你的寫法會引發nil的問題吧。 11/15 21:36
20F:→ tkdmaf: 你這樣萬一二個條件都不對不就崩了? 11/15 21:37
21F:推 ericdoctor: 的確還要再加上else才完成,我這邊只是省篇幅,抱歉造 11/15 21:53
22F:→ ericdoctor: 成誤解,主要是想請問這樣變數還有需要在if敘述之前初 11/15 21:53
23F:→ ericdoctor: 始化嗎? 11/15 21:53
24F:→ MOONRAKER: 你有執行路徑觀念吧?拿來php也是一樣 11/16 01:51
25F:→ MOONRAKER: 你確定nested if可以對應到所有狀況 當然可以不要初值 11/16 01:52
26F:→ MOONRAKER: 你不太確定 或者想保平安 像開車門之前先看後面一樣 11/16 01:53
27F:→ MOONRAKER: 那就把初值寫在前面 這樣起碼有個fail-safe 11/16 01:55
28F:→ MOONRAKER: 要考慮一下 這個code將來可能會交給別人 那時他會怎麼 11/16 01:59
29F:→ MOONRAKER: 修改 會不會在else後面再加東西讓他不能涵蓋所有狀況 11/16 02:02







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP