新手犯的错误估计有一半是在引号和字符串连接上面的,在长长一句SQL,或PHP+HTML中.错误率尤其严重.为免重复回答我就简要说说引号的用法. 一.首先想想PHP里所有的单词(其实应该叫符号)有几类. 1.PHP,MySQL两方的关键词与函数.例如echo,print,mysql_connect等等.这些肯定不加引号的. 2.常量.新手可能用得不多,常量的好处是全局性,穿透函数.速度也快些不过新手可以暂时不管常量这玩意儿. 3.变量.前面带"contentquot;号的就是变量.可以为变量设一个"值",例如一串字符,一个数字,逻辑(真/假)值等.也可以表示一组值(数组,对象等) 4.值.通常要给常量与变量设置值.赋值语句$a='abc'中,右边的'abc'即为值. 5.函数的参数(在括号里的).可以是常量,变量,值三种. 变量(常量)与值的关系正如下列各种情况. "颜色"与"红", "长度"与100, "日期"与2007年10月25号" 二.什么情况下用引号 其实只有第4项"值"需要用到引号,函数的里也只有值要用引号.并且只有字符串(日期值可以当成字符串)内容需要用到引号.数字(可用可不用),真假(不能用)例外. 例子 三.单引号与双引号的区别 一般情况下两者是通用的.但双引号内部变量会解析,单引号则不解析. 例子 PHP: $a = 123; echo "$a"; //输出: 123 echo '$a'; //输出: $a 所以如果内部只有纯字符串的时候,用单引号(速度快),内部有别的东西(如变量)的时候,用双号引更好点. 四.字符串内部如果出现引号怎么办--关于转义. 比如我们想输出: 我"是'天才 PHP: echo "我"是'天才" ; //这样绝对会出错的,因为引号混乱,内容中的引号引起整句代码的错误. 这时候就必须用到转义了.转义即把本来有作用的符号转成无意义的字符. PHP: echo "我"是'天才"; 这样就正常了,因为号把它后面的任何字符都转成无意义的符号.在这里来说,PHP解析器根本没把号后面的引号当成引号来看待. 同样的,还可以转义分号,$符号等特殊符号. 五.字符串的连接. 这是个麻烦的问题.一般来说,变量值,直接包含在双引号中就可以了.另外字符串的叠加用"."字符. PHP: $name = '天才'; echo "我的名字是$name"; echo '我的名字是'.$name; //也可以用点连接符 echo "我的名字是".$user['name']; //如果是输出数组中的一个元素,例如$user['name'];代表用户的名字. 在复杂的情况里可以用大括号来包含,PHP便知道这是一个完整的东西,里面的引号不会影响到外面的引号关系. PHP: echo "我的名字是{$user['name']}"; 与html的混合也很简单,最好养成HTML中全部用双引号,PHP中尽量用单引号的习惯.这样方便把大段的HTML代码复制过来,只要头尾加上单引号就是一个正确的字符串了.几百行的HTML代码也不用担心引号错乱. PHP: echo '<h1 width="80">PHP与HTML的混合.</h1>'; echo '<img src=/uploadfile/201212/7/FE101229947.jpg" title="推荐" />' PHP: 总结一下使用原则 1.字符串的值用引号 2.PHP中尽量用单引号,HTML代码全部用双引号 3.在包含变量的时候,用双引号可以简化操作 4.复杂的情况下用大括号包起来. [php]$sql = "SELECT * FROM xy_reply"; //sql语句是一个字符串. $age = 18; //数字值不用引号. $db->Connect('localhost', 'root', '', 'xinye'); //各参数都是字符串,所以要引号. print_r($sql); //$sql是变量,所以不用引号.虽然它的值是字符串(因为他在得到值的时候已经有引号了.看第一行.) 还有一个用处就是,有的时候需要用php生成文本文件,换行符n需要用双引号才能好使,单引号则会直接把n当成字符输出 (责任编辑:admin) |