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/cn.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灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP