"=="(!=)和"==="(!==)的区别
===( 3 等号运算符), 为在两个值和其类型之间作检查。例如, '3' ===3 将视为假 ( 类型是不同的 ), 而 3 ==3 ( 相等判断 ) 将视为真。请看例一:
==:等于运算,但是不比较值的类型;===:完全等于运算,不仅比较值,而且还比较值的类型,只有两者一致才为真。 例如: $string = '<1000'; if(!(strpos($string, '<') === false)){ echo "有小于号"; }elseif(!(strpos($string, '>') === false)){ echo "有大于号"; }else{ echo "小于,大于号都没有."; } 输出:有小于号 这是为了防止有些表达式本身就是 false 那样判断起来可能有误,所以用三个等号。可以读做“绝对等于”。 |
$a == $b | 等于 | TRUE,如果 $a 等于 $b。 |
$a === $b | 全等 | TRUE,如果 $a 等于 $b,并且它们的类型也相同。(PHP 4 引进) |
$a != $b | 不等 | TRUE,如果 $a 不等于 $b。 |
$a <> $b | 不等 | TRUE,如果 $a 不等于 $b。 |
$a !== $b | 非全等 | TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进) |
'和"的区别
” ” 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。
‘ ‘ 单引号里面的不进行解释,直接输出。
从字面意思上就可以看出,单引号比双引号要快了。
php里的单引号把内容当成纯文本,不会经过服务器翻译。而双引号则与此相反。里面的内容会经过服务器处理(process). 举个简单的例子:
$foo="data";
echo '$foo'; //单引号输出$foo
echo "$foo"; //双引号输出data
单引号不能处理变量和转义字符(除了\\和\'这两个),要输出下面的字符串
what's my name?
可以这么来写:
echo "what's my name?"; //最简单的写法,单引号和双引号不产生冲突(conflict)
echo 'what\' my name?'; 用斜杠转义
如果要输出含有变量的字符串时就必须小心点,否则很可能产生错误。
$email=$_POST['email'];
现在要输出this is your email $email;可以有两个方式
echo "this is your email $email"; //双引号服务器会自动解析
echo 'this is your email'.$email; //用连字符和纯字符串和变量链接起来
一旦涉及到Mysql中的sql语句,就更得小心了。从简单说起,sql语句,其中的条件是常量 SELECE * FROM email_table WHERE username="abc"; php中可以写成 $query="SELECE * FROM email_table WHERE username='abc'";//query语句一定要用双引号括起来 假设查询的条件是变量,如$abc=$_POST['username']; 可以写成 $query="SELECT * FROM email_table WHERE username=' ".$abc." ' "; 可以分成几步理解: 1."SELECT * FROM email_table WHERE username=' " 纯字符串 2. .连接符,用来链接后面的字符 3.$abc 显示变量的值 4.." ' "连字符链接后面的单引号(为了与条件中的第一个单引号配对) 其实不必这么复杂,可以这么写 $query="SELECT * FROM email_table WHERE username='$abc' "; 可以这么理解,双引号内部的全都要被服务器解析,单引号只是当成普通字符而已. 再复杂一点 $user=array (”name”=> $_REQUEST['user_name‘,"age"=>$_REQUEST['age'];// $abc=array("name"=>$_POST['username'],"age"=>$_POST['age']); $abc为数组变量,则写成 $query="SELECT * FROM email_table WHERE username=' " .$abc["name"]." ' "; |
最后需要说明的是,很多人以为单引号不能包含双引号,这是错误的。就个简单的例子,输出html语句:
echo ' <input type="text" name="email" id="email" /> ';
html包含很多的双引号使用,可以用单引号包含起来,是没有问题的 。双引号虽好,能包含变量和转义字符,但是效率比单引号低,能用单引号的尽量用单引号,不可忽略的是,要注意区分英文和中文引号(dreamweave包含字符串时会高亮显示,中文则不会)。
单引号里面的双引号中的变量不会解析!
一.首先想想PHP里所有的单词(其实应该叫符号)有几类.
1.PHP,mysql两方的关键词与函数.例如echo,print,mysql_connect等等.这些肯定不加引号的.
2.常量.新手可能用得不多,常量的好处是全局性,穿透函数.速度也快些不过新手可以暂时不管常量这玩意儿.
3.变量.前面带"$"号的就是变量.可以为变量设一个"值",例如一串字符,一个数字,逻辑(真/假)值等.也可以表示一组值(数组,对象等)
4.值.通常要给常量与变量设置值.赋值语句$a=\'abc\'中,右边的\'abc\'即为值.
5.函数的参数(在括号里的).可以是常量,变量,值三种.
变量(常量)与值的关系正如下列各种情况.
"颜色"与"红",
"长度"与100,
"日期"与2007年10月25号"
二.什么情况下用PHP引号
其实只有第4项"值"需要用到引号,函数的里也只有值要用引号.并且只有字符串(日期值可以当成字符串)内容需要用到引号.数字(可用可不用),真假(不能用)例外.
三.单引号与双引号的区别
一般情况下两者是通用的.但双引号内部变量会解析,单引号则不解析.
所以如果内部只有纯字符串的时候,用单引号(速度快),内部有别的东西(如变量)的时候,用双号引更好点.
四.字符串内部如果出现PHP引号怎么办--关于转义.
比如我们想输出: 我"是\'天才
这时候就必须用到转义了.转义即把本来有作用的符号转成无意义的字符.
这样就正常了,因为号把它后面的任何字符都转成无意义的符号.在这里来说,PHP解析器根本没把号后面的引号当成引号来看待.
同样的,还可以转义分号,$符号等特殊符号.
五.字符串的连接.
这是个麻烦的问题.一般来说,变量值,直接包含在双引号中就可以了.另外字符串的叠加用"."字符.
在复杂的情况里可以用大括号来包含,PHP便知道这是一个完整的东西,里面的引号不会影响到外面的引号关系.
与html的混合也很简单,最好养成HTML中全部用双引号,PHP中尽量用单引号的习惯.这样方便把大段的HTML代码复制过来,只要头尾加上单引号就是一个正确的字符串了.几百行的HTML代码也不用担心PHP引号错乱.
总结一下PHP引号使用原则
1.字符串的值用引号
2.PHP中尽量用单引号,HTML代码全部用双引号
3.在包含变量的时候,用双引号可以简化操作
4.复杂的情况下用大括号包起来
PHP引号还有一个用处就是,有的时候需要用php生成文本文件,换行符\n需要用双引号才能好使,单引号则会直接把\n当成字符输出。
include()和require()方法的区别
PHP的include()和require()是两种包含外部文件的方法,对于这两种方法有什么区别,很多初学者可能不是很明白。下面总结一下PHP include()和require()的区别:
1:加载失败的处理方式不同:
include()会产生一个警告,而require()则导致一个致命的错误(出现错误,脚本停止执行)
require() :如果文件不存在,会报出一个fatal error.脚本停止执行
include() : 如果文件不存在,会给出一个 warning,但脚本会继续执行
这里特别要注意的是:使用include()文件不存在时,脚本继续执行,这种情况只出现在PHP 4.3.5之前
推荐使用require_once()和include_once(),可以检测文件是否有重复包含。
2.php性能
对include()来说,在 include()执行时文件每次都要进行读取和评估;
而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语句)。
这就意味着如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。
另一方面,如果每次执行代码时相读取不同的文件,或者有通过一组文件叠代的循环,就使用include(),
因为可以给想要包括的文件名设置一个变量,当参数为include()时使用这个变量。
3.二种方式提供不同的使用弹性。
require 的使用方法如 require("./inc.php"); 。通常放在 PHP 程式的最前面,PHP 程式在执行前,就会先读入 require 所指定引入的档案,使它变成 PHP 程式网页的一部份。
include 使用方法如 include("./inc/.php"); 。一般是放在流程控制的处理区段中。PHP 程式网页在读到 include 的档案时,才将它读进来。这种方式,可以把程式执行时的流程简单化。
require即使在条件位FALSE的时候也会被包含,而include只会在执行到改位置时候才会去执行。
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。require_once()函数的作用和 require() 是几乎相同的
include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。include_once()函数的作用和 include() 是几乎相同的
require_once的作用是会检查之前是否加载过该文件,如果没有加载则加载 如果加载过就不再次加载,比如某文件定义了一个类型 如果两次加载该文件会出现错误
以上就是PHP include()和require()方法的区别。
转载于:https://blog.51cto.com/zdkhome/1217243