基础PHP小知识分享
一、require 和 require_once的区别
require 和 require_once两个的引用方法没有什么区别;他们的区别在于使用require每引用一次文件中的代码就会被执行一次,而使用require_once函数则不然,如果目标文件中的代码已经被包含了,则不会再次被包含。
二、require 和 include 的区别
在使用上两者没有本质的区别。两者的区别体现在当目标文件不存在时的处理方法上。
如果引用的文件不存在,include将会产生一个警告;require则会导致一个致命的错误。换句话说,如果想在丢失文件时停止处理页面,可以使用require方法。而include则不会这样,即便出错,脚本也会继续运行。
如:当使用require时
<?php
require "hello1.php";
echo '<br>';
require_once ("hello.php");
?>
显示的结果:
Warning: include(hello1.php) [function.include]: failed to open stream: No such file or directory in D:AppServwwwlianxidiaoyong.php on line 2
Warning: include() [function.include]: Failed opening 'hello1.php' for inclusion (include_path='.;C:php5pear') in D:AppServwwwlianxidiaoyong.php on line 2
脚本出现错误,require_once 调用的函数不会被执行。
当使用include时:
<?php
include "hello1.php";
echo '<br>';
require_once ("hello.php");
?>
显示的结果:
Warning: include(hello1.php) [function.include]: failed to open stream: No such file or directory in D:AppServwwwlianxidiaoyong.php on line 2
Warning: include() [function.include]: Failed opening 'hello1.php' for inclusion (include_path='.;C:php5pear') in D:AppServwwwlianxidiaoyong.php on line 2
hello world
即使脚本出现错误,require_once调用的函数也会被执行。
三、PHP中的常量的值只包括4种类型:
整型(整数)integer
浮点型 float(含小数点得数)
字符型 string(字符与字符串)
布尔型 boolean (布尔值)
四、数据类型分类
数据类型分为3大类共8种类型:
1、最基本的4种类型:
boolean (布尔型)
integer (整型)
float (浮点型)
string (字符串型)
2、符合型数据
array (数组)
object (对象)
3、最特殊的数据类型
resource (资源)
NULL (无值) 注:使用unset()函数可以注销一个变量
五、查看一个函数的类型我们可以使用
gettype() 函数
该函数的语法格式代码如下
string gettype (mixed var)
六、自定义常量的函数
define()
该函数的语法格式代码如下
bool define(string name, mixed value[,bool case_insensitive])
如,定义一个HOSTNAME的常量
define ("HOSTNAME","localhost");
七、当将自定义函数的的可选项case_insensitive设置为true时定义的常量将会 忽略大小写。
八、获取所有预定义的PHP常量
get_defined_constants()
该函数的语法格式代码如下:
array get_defined_constants([mixed categorize])
可选参数categorize,该参数用于指定是否把系统中的常量按照其各自所属的 分类输出。
九、魔术常量
魔术常量属于系统常量的一种,与普通的系统常量不同,该类常量在不同的 PHP文件中将会有不同的值。
1、__LINE__, 指代当前代码所在行数。
2、__FILE__, 指代当前文件的路径名。
3、__FUNCTION__, 指代当前被调用的函数名。
4、__CLASS__ , 指代类的名称名。
5、__METHOD__, 指代类的方法名。
十、比较运算符
比较运算符用于对不同的内容进行大于、小于、等于及不等于类似的比较操 作。
== (等于),该运算符如果前后内容相等则返回TRUE,反之则返回FALSE
=== (全等于),该运算符如果前后内容相等并且类型一致则返回TRUE,反之则 返回FALSE。
!= (不等), 该运算符如果前后内容不相等则返回TRUE,反之则返回FALSE
<> (不等), 该运算符如果前后内容不相等则返回TRUE,反之则返回FALSE
!== (非全等),该运算符如果前后内容不全等则返回TRUE,反之则返回FALSE
< (小于), 该运算符如果前面的值小于后面的值则返回TRUE,反之则返回 FALSE。
> (大于), 该运算符如果前面的值大于后面的值则返回TRUE,反之则返回 FALSE。
<= (小于等于),该运算符如果前面的值小于等于后面的值则返回TRUE,反 之则返回FALSE。
>= (大于等于),该运算符如果前面的值大于等于后面的值则返回TRUE,反之 则返回FALSE。
十一、逻辑运算符
PHP中得逻辑运算符用于处理逻辑与、逻辑或、逻辑异或及逻辑非等逻辑关 系并返回相应的布尔值。
and (逻辑与),该运算符如果前后的两个值均为TRUE则返回TRUE,反之返回 FALSE。
or (逻辑或),该运算符如果前后的两个值中至少有一个为TRUE返回TURE, 反之(如果没有一个TRUE)FALSE。
xor (逻辑异或),该运算符如果前后两个值不同(一个为TRUE,另一个为 FALSE)则返回TRUE,反之(两者相同)则返回FALSE。
! (逻辑非),该运算符号如果其后面的值为FALSE则返回TRUE,反之则返回 FALSE。
&& (逻辑与),同and(优先等级不同)。
|| (逻辑或),同or (优先等级不同)。
十二、递增/递减运算符
PHP中也支持C语言风格的前/后递增与递减运算符。PHP中得递增/递减运算 符包括一下几种:
++$a (前加),$a的值加1,然后返回$a; ($a的值先加一,在返回$a)
$a++ (后加),返回$a,然后将$a的值加1;
--$a (前减),$a的值减1,然后返回$a;
$a-- (后减),返回$a,然后将$a的值减1; ($a的值先返回$a,在减一)
注:从上面可以看出:前加(减)是先加(减)再返回值,而后加(减)则是先返 回值再加(减)。
十三、三目运算符
三目运算符由两个表示符号即问号、冒号等组成。其语法格式如下:
(expr1)?(expr2):(expr3);
语句的意思是:当expr1为TRUE时返回expr2当expr1为FALSE时返回expr3。
十四、流程控制语句
1、if 判断;
语法:if(expr)
{
statement
.........
}
2、if....else 判断;
语法:if(expr)
{
statement1;
}
else
{
statement2;
}
3、if....elseif....else 多重判断;
语法:if(expr)
{
statement1;
}
elseif(expr2)
{
statement2;
}
elseif(expr3)
{
statement3;
}
........
else
{
statementN;
}
4、switch 判断;
语法: switch($var)
{
case value1;
statment1;
break;
case value2;
statment2;
break;
.......
default:
statmentN;
}
也可以使用以下的语法替代格式:
switch($var):
case value1:
statment1;
break;
case value2:
statment2;
break;
.......
default:
statmentN;
endswitch;
5、while 循环;
语法格式: while(expr)
{
........
statment;
}
6、do 循环;
语法格式:do
{
........
statement;
}
while(expr);
7、for 循环;
语法格式:for (expr1; expr2; expr3)
{
......
statement;
}
常见的格式:for ($i=1; $i<6; $i++)
{
...........
statement;
}
8、foreach 循环;
语法格式: foreach (array_expression as $value)
{
statement;
}
foreach (array_expression as $key => $value)
{
statement;
}
解释:
(一)、if 判断是所有的判断中最简单的一种。因为其只判断条件为真的一 种情况,所以也被称为单重判断。
(二)、if....else.... 判断语句在判断条件为假时不会执行指定语句,却 会执行程序所设定的另外的语句。
(三)、if....elseif...else... 判断语句时,为了提高效率,一定要把最 有可能为真的语句放到最前面,而把最不可能出现的情况放在最后面。这 样当遇到判断条件问真时,就不用在执行后面的内容。
(四)、switch 判断语句的使用限制。与if elseif else判断不同,switch 仅能用于判断的内容是一个变量的情况,而其中case后面跟的判断结果都 应该是一个值而不能是一个表达式。而if elseif else在这方面则更加自 由,其中的判断内容可以是任意的表达式。
注意:switch 判断语句,如果在case后面不加break语句,则switch 会一直执行到最后一句case后面的内容。所以,通常情况下都需要在每个 case后面加上break语句,以使case执行之后跳出整个判断过程。
(五)、do循环和while循环的区别:
他们的区别在于:while循环当条件不满足时,跳出循环,do循环无论条件 满足还是不满足,首先执行一次。
(六)、for 循环中需要三项内容,expr1,expr2,expr3分别为三个表达式,
第一个表达式(expr1)在循环开始前无条件求值一次;expr2在每次循环开
始前求值,如果值为TRUE,则继续执行循环体的语句statement。如果值为
FALSE则终止循环,expr3在每次循环之后被求值(执行)。
for循环与while循环的比较:
while循环在知道什么情况下执行循环时相对方便;而for循环更适合于事 先知道循环次数的场合。
(七)、foreach 开始执行时,数组内部的指针会自动指向第一个单元,这 意味着不需要在foreach循环之前调用reset()(重置数组)。并在每次循环 时自动向前移一步。
(八)、break 和 continue 的区别
break 和 continue 都有跳出循环的作用,
break主要是无条件的跳出整个循环,continue则是无条件的跳出本 次循环,继续执行后面的循环。
使用if判断语句和continue语句时,如果将它们放到最前面将会造成死循 环。
十五、用编程的思想解决百钱百鸡问题
有100文钱,买100只鸡,规定100只鸡中公鸡、母鸡和小鸡。买一只公鸡需 要5文钱,买一只母鸡需要3文钱,买三只小鸡需要1文钱,问:怎样才能凑 成百钱买百鸡?
代码如下:
<?php
$i=0;
for($x=0;$x<20;$x++)
{
for($y=0;$y<100-$x;$y++)
{
$z=100-$x-$y;
if(5*$x+3*$y+$z/3==100)
{
$i++;
echo "第".$i."种方案:";
echo "公鸡数位:";
echo $x." ";
echo "母鸡数位:";
echo $y." ";
echo "小鸡数位:";
echo $z." ";
echo "<p>";
}
}
}
?>
十六、PHP中的函数
函数的定义:简单的说,函数是为了完成特定的功能而整体存在的一个代 码块。所以从函数的定义来说,函数的实质就是代码的集合,也就是一段 能独立完成某种操作的代码。
十七、PHP中函数的定义样式:
function fun_name(var_name....)
{
/*
这里是具体的代码
*/
}
所以定义一个函数,使用function关键字+函数名称+加一对半角括号,并 在括号中加上所需要的参数表,然后用一对大括号来包括所有需要执行的
代码即可。
十八、定义函数是需要遵循的原则
1、函数名必须依字母开头。
2、函数名只能依字母、数字和下划线组成,而不能包含空格、标点符号及 运算符等其他特殊的符号。
3、函数名不能与PHP中的关键字名称相同,如if、else、for等
4、变量名不能与PHP中系统内部库函数名称相同。
十九、函数的返回值
自定义函数中如果要设置一个返回值,可以使用如下代码
function functionname()
{
//函数体
return result;
}
在函数体中使用return语句再加上欲返回的内容即可。这样指定的值 result就会作为函数值被返回。
二十、函数的参数
在PHP中函数的参数就是写在函数名称后圆括号内常量、变量、表达式,在 这几种类型中以变量使用的最广泛。
函数的创建代码
function functionname(var_name...)
{
/*
这里是具体的代码
*/
}
二十一、面向对象
面向对象的做法通常是为了完成某一个功能,要先定义一个类,并给该 类添加相应的方法。然后再为这个类初始化一个对象,让对象去执行相应 的方法,从而完成所需要的功能。
二十二、面向对象与面向过程的特点
1、代码的封装不同。
“面向过程”程序设计的方法使用函数或者普通的代码对数据进行操作 ,在这种方式下使用函数来处理数据,而函数又是与数据分离的,所以 面向过程仅封装了对数据的操作方法而没有封装数据。
“面向对象”程序设计方法是以对象为中心,使用类将数据(属性)和对 数据的操作(方法)封装在一起,作为已给整体来处理,通过这样的封装 ,使得数据与操作方法的关系更加紧密。
2、代码可维护性不同。
“面向过程”程序设计方法以代码所要实现的功能来设计功能模块(如 函数),该种方法难以维护
“面向对象”程序设计方法以数据位中心来描述系统,功能实现千变万 化,有时一点很小的功能改动可能会导致全盘重做,而数据则相对稳定 ,即使发生变化,只需要改动相应内容即可。所以面向对象的代码比面 向过程的代码更加容易维护。
3、流程控制不同。
“面向过程”程序的控制流程由程序中预定顺序来决定,所以说其流程 是死板的。
“面向对象”程序的控制流程由运行时各种事件的实际发生来触发,而 不在由预定顺序来决定。这中流程的控制方式更加灵活,也更符合实际 需要。
4、框架利用不同。
如今网络技术飞速发展,网上有非常多得开源框架资源,面向对象程序 设计方法可以充分利用已有的框架产品进行二次开发;这种方面,使用 面向过程,虽然可以使用一些函数之类来完成相关功能模块的构建,但 远不如使用己有框架来的方便。
通过以上的比较可以发现,面向对象与面向过程二者各有有缺点。在实际 工作中,如果是开发团队协同工作大型程序,最好采用面对对象编程的方 法。如果是个人开发的小型程序,而且工作量不大,可以根据实际情况采 用自己喜欢的方法。
二十三、PHP中定义一个类的语法格式:
class classname
{
var $var;
function functionname()
{
....
statement;
}
}
二十四、为类实例化对象
$obj_name=new classname;
以上代码中,classname为指定已经存在的类的名称,而$obj_name则为 需要对类实例化的对象。在PHP中为类实例化一个独享应该在创建类之后 ,使用"new" 关键字在跟上类的名称即可。
二十五、使用对象
$obj_name=new classname;
$obj_name->varname;
$obj_name->functionname();
以上代码中我们可以看出,PHP中调用对象的属性和方法使用"->"操作符号 加上属性的名称或方法的名称。这里需要注意,调用对象属性(变量)时不 需要再加"$"符号,而调用对象方法(函数)时需要在函数名后在加上括号。 对象属性就可以当做普通变量使用,而其他方法也可以当做普通函数使用 。
二十六、类的继承
继承是一种由己有地类创建新类的机制,利用继承,用户可以先创建一个 共有属性的一般类,根据该一般类再创建具有特殊属性的新类。新类继承 一般类的状态和行为,并根据需要增加它自己的新的状态和行为。由继承 而得到的类称为子类,被继承的类称为父类。在php中使用关键字extends 来创建继承父类的子类。
语法格式:
class parent_class
{
var $varname
function functionname()
{
.......
statement;
}
}
class child_class extends parent_class
{
var $var
function function()
{
.....
statement;
}
}
二十七、类的引用
类的引用就是值在一个类中使用另一个类中定义的属性和方法。要在一 个类中引用另一个类的内容,
可以使用如下代码格式:
class classname
{
var $varname;
function functionname()
{
......
statement;
}
}
class otherclass
{
classname::functionname();
classname::$varname;
}
在一个类中引用另一个类的属性和方法,需要使用类的名称加上"::"再 加上方法或者属性名称既可(方法需要跟上参数表,属性需要加美元符号 )。
二十八、类的构造方法
类的构造函数是在为类实例化一个对象是会执行的一个方法。在PHP中使 用特殊的函数__construct()来表示类的构造方法(双下划线加construct 加上一对括号来表示)。构造函数一般用于初始化类的一些重要属性。
其语法格式:
class classname
{
var $var;
function __construct([$var])
{
......
}
}
在一个类中只能声明一个构造方法,而且只有在每次创建对象时调用一
次构造方法,不能主动地调用这个方法。所以通常用构造方法执行一些
有用的初始化任务。如对对象属性在创建时赋初值。
二十九、检查类是否定义
PHP系统总检查类是否被定义用 class_exists(),语法格式:
bool class_exists(string $class_name[,bool $autoload])
三十、 返回类的方法名
PHP中系统函数中得get_class_methods()函数,可以将类的方法以数组
的形式返回,该函数的语法格式:
array get_class_methods(string $class_name)
三十一、返回类的属性
PHP还可以使用系统函数返回类中属性的名称。使用get_class_vars()即
可返回由类的默认属性组成的数组。该代码的语法格式:
array get_class_vars(string $class_name)
三十二、返回对象的类名
使用PHP中得系统函数get_class()可以返回指定对象所属的类的名称。
该函数的语法格式如下:
string get_class([object $obj])
三十三、检查类与对象的关系
PHP提供了用于检查类与对象关系的关键字:instanceof,使用该关键字
可以判断某一个对象是否是类的子类。该操作符的语法格式如下:
$object instanceof $class_name
三十四、检查方法是否存在
PHP中用于检查类中指定方法是否存在的函数是:method_exists()
该函数的语法格式如下:
bool method_exists(object $object,string $mothod_name)
三十五、检查属性是否存在
PHP中使用property_exists()函数可以检查属性是否存在
该函数的语法格式为:
bool property_exists(mixed $class,string $property)
三十六、数据库的操作
链接到数据库:
使用PHP中得函数mysql_connect()可以链接到指定的MySQL服务器,
该函数语法为:
resource mysql_connect([string server[,string username [,string password[,bool new_link[,int client_flags]]]]])
以上代码中:参数server为服务器名称;参数username为链接服务器的
用户名;参数password为连接密码;参数new_link为布尔型变量,指定
是否建立一个姓的连接;参数client_flags可以是一下常量的组合,
MYSQL_CLIENT_SSL, MYSQL_CLIENT_COMPRESS, MYSQL_CLIENT_IGNORE_SPACE, MYSQL_CLIENT_INTERACTIVE,
该参数决定建立连接的客户端常量。如果成功执行函数将会建立到指定
服务器的连接,否则将会返回FALSE。
- 1SEOer要学会寻找优质外链
- 2ECSHOP怎样去除版权
- 3关键字排名优化服务
- 4seo搜索引擎优化的秘诀
- 5开发在制作的时候就要从购房者的角度去考虑
- 6不能因为有了好用的热水器就毫无节制的洗澡
- 7计件工资系统分享—企业ERP系统失败的三大原因
- 8电子邮件加密传输
- 9义乌手机APP程序开发三条妙招助企业应用开发
- 10连锁式经营的管理办法
- 11为防止水碱、水垢大量附着在热水器内胆内
- 12八种赚不到钱的站长
- 13什么样的网站是电子商务网站?
- 14义乌软件公司分享ERP系统需要用户需求统一
- 15企业培训机构网站设计方案
- 16怎么查看别人的微信聊天记录内容
- 17测试一下你的搜索引擎收录
- 18中扬科技做临沂最专业的APP
- 19ONU的主要特点
- 20细谈虚拟主机常见问题
- 21域名解析常见问题
- 22母体专为新生宝宝准备绝无仅有的特别营养食物
- 23浅谈搜索引擎对新站收录的要求
- 24作为站长怎样快速增加流量
- 25PHP + AJAXauxin分页
- 26域名解析和DNS修改的区别
- 27为大家详细介绍沙盘模型在建筑物中作用有哪些
- 28ERP系统与SCM系统七大重叠功能
- 29现在很多购房者在买房前都忽略看沙盘这一项
- 30网站优化价位是多少