PHP基础知识
2016-12-24 15:16
302 查看
一、变量
1. 变量允许我们为运算创建模板,例如,把两个数相加,而不用担心变量具体所表示的值。
变量名:变量由美元符号$开头。变量名由字母、数字、以及下划线组成,且必须以字母或下划线开始。
PHP为弱类型,变量在使用前无须声明,编译器在第一次给变量赋值时推断其类型。
例如:$num1=8; 则变量为integer类型
2. 全局变量的定义:在变量前需加关键词:global ,当一个脚本调用另一个,或者包含另一个脚本时用到。
3. 超全局变量(superglobal),即程序运行一直存在,且对所有脚本都可用的。
$_GET 、$_POST、$_COOKIE、
$_FILES 包含了通过文件上传提供给一个脚本的任何变量。
$_SERVER 包含了像标头、文件路径和脚本位置等信息
$_ENV 包含了作为服务器环境的一部分提交给一个脚本的任何变量。
$_REQUEST 包含了通过GET、POST或COOKIE输入机制提供给一个脚本的任何变量。
$_SESSION 在一个会话中当前注册的任何变量。
二、数量类型
PHP是宽松的语言,它将在数据被赋值时才确定数据的类型。
PHP标准数据类型
PHP提供了一组 is_* 函数,用于测试变量的类型。
例如:
2.1 更改变量的类型settype()
例如:
2.2 类型转换
注意:类型转换会生成一个拷贝,原变量保持不变。
在脚本内容需要类型转换的情况下,PHP会自动为你进行变量类型转换。自动转换是临时的,如果想让一个变量持久的保存一种特定的数据类型,就需要明确地改变类型。
如果试图把两个字符串相加,由于它们包含数字,在相加的时候,PHP会把字符串转换成数字,例如:“30cm"+"40cm",结果为:70
注意:在把字符串转换为整数或浮点数的时候,PHP将会忽略任何非数字字符,字符串将会被截断,并且,从第一个非数字字符开始向后的所有字符都被忽略。
何时应该测试数据类型?
对于要使用指定数据类型的函数,首先验证函数被指定的值具有正确的数据类型是一个好的习惯。
三、操作符和表达式
1.连接操作符
连接操作符用一个句点"."表示,它把两个操作数都当作字符串连接起来。例如:"hello"." world" ,返回:"hello world"
不管连接的操作数是什么数据类型,它们都会被当作字符串对待,并且结果也总是字符串类型。
什么情况下使用,连接操作符?
当需要把某种类型的表达式结果和一个字符串组合到一起的时候使用,例如:$cm=212;echo "the width is ".($cm/100)." meters";
等同操作符:===,左边等于右边并且它们类型相同。例如:$x===4 结果:true
操作符:xor,左边或右边为true,但不都为true
逻辑操作符:
或:||(or), 且:&&(and),非:!,优先级:||高于or,&&高于and
优先级:
++,--,(cast)
/,*,%
+,-
<,<=,>,>=
==,===,!=
&&
||
=,+=,-=,/=,*=,%=,.=
and
xor
or
注意:逻辑操作符,一般使用||和&&,并且利用括号来改变操作符的顺序。
四、常量
用define()定义一个常量,常量名应该大写,访问时前面不需要加$符号。
PHP内建常量,例如:__FILE__,返回PHP引擎当前所读取的文件名,__LINE__返回该文件的当前行数。
五、流程控制
零、一个未定义的变量或者一个空字符串,做为条件时都为false,其他值都为true。
六、函数
函数分为两类:
1.内建于语言中的函数
例如:
strtoupper("Hello Web!");//转换成大写字母
$num=-321;
$newnum=abs($num);求绝对值
注意:print()和echo()函数并不是真正的函数,它们用来设计把字符串输出到浏览器的语言构造。
2.自己定义的函数
注意:函数名是不区分大小写的,变量区分。
3.变量作用域
函数只能访问参数变量,如果需要访问上下文变量必须的先用global声明,global声明的变量表示对原变量的直接引用,修改值会影响到原始值。
参数是变量的副本,在函数中修改它,对于函数块以外的部分没有任何影响。
$life=42;
4.static声明的变量,在函数多次调用之间能保持自身的状态
注意:可以为参数设置一个或多个默认值,但这些参数必须放在参数列表的最后。
6.引用类型参数
七、数组
a.数值数组
可以用array()或数据操作符[]创建一个数组。
1.创建新的数组且有多个元素填充时,用array()函数
2.创建新数组,开始时只用一个元素,或者对已存在的数组添加一个元素时。
b.关联数组
注意:关联数组和数字数组的区别在于键名,数字数组键名是数字,关联数组键名是有意义的单词。
注意:数字数组和关联数组,一个数组中可以是数值或字符串,同时存在。但不能是日期类型。
c.多维数组
包含其它数组的一个数组。
$characters=array(array('name'=>'Bob',"occupation"=>'superhero',"age"=>30,'special power'=>'x-ray vision'),
array('name'=>'Sally','occupation'=>'superhero','age'=>24,'special power'=>'superhuman strength'),
array('name'=>'Jane','occupation'=>'arch villain','age'=>45,'special power'=>'nanotechnology'));
echo $characters[2]['age'];//访问元素
echo "<br/>";
//遍历二维数组
foreach ($characters as $c)
{
while (list($k,$v)=each($c))
{
echo "$k ... $v <br/>";
}
echo "<hr/>";
}
操作数组的相关函数:
count()sizeof()——统计元素的个数。
each()和list()——遍历数组并返回其键和值的应用中,这两个函数通常一起出现。
foreach()——用于遍历数组。
reset()——把指针指向数组的开始位置。
array_push()——在一个已有数组的末尾添加一个或多个元素。相对应的在开头添加的函数array_unshift()
array_push($existingArray,"element 1","element 2");
array_pop()——删除最后一个元素,并返回删除的元素。相对应的删除第一个元素array_shift()
$last_element=array_pop($existingArray);
array_merge()——合并两个以上的数组,并返回合并后的数组。
array_keys()——返回给定数组的键名的数组
array_values()——返回给定数组的值的数组
shuffle()——随机排队数组元素列表。
1. 变量允许我们为运算创建模板,例如,把两个数相加,而不用担心变量具体所表示的值。
变量名:变量由美元符号$开头。变量名由字母、数字、以及下划线组成,且必须以字母或下划线开始。
PHP为弱类型,变量在使用前无须声明,编译器在第一次给变量赋值时推断其类型。
例如:$num1=8; 则变量为integer类型
2. 全局变量的定义:在变量前需加关键词:global ,当一个脚本调用另一个,或者包含另一个脚本时用到。
3. 超全局变量(superglobal),即程序运行一直存在,且对所有脚本都可用的。
$_GET 、$_POST、$_COOKIE、
$_FILES 包含了通过文件上传提供给一个脚本的任何变量。
$_SERVER 包含了像标头、文件路径和脚本位置等信息
$_ENV 包含了作为服务器环境的一部分提交给一个脚本的任何变量。
$_REQUEST 包含了通过GET、POST或COOKIE输入机制提供给一个脚本的任何变量。
$_SESSION 在一个会话中当前注册的任何变量。
二、数量类型
PHP是宽松的语言,它将在数据被赋值时才确定数据的类型。
类型 | 例子 | 说明 |
---|---|---|
Boolean | true、false | 布尔。任何非0的数字转换成布尔值都为true。true显示为1,false显示为空字符串。 |
Interger | 5 | 整数 |
Float或Double | 3.234 | 浮点数 |
String | "hello" | 字符的一个集合 |
Object | 类的一个实例 | |
Array | 数组:键和值的一个有序的集合 | |
Resource | 对一个第三方资源(如数据库)的引用 | |
NULL | 一个未初始化的变量。为已经声明但还没有赋值的变量保留的。 |
例如:
is_null($num);//是否为空 is_int($num);//是否为整数
2.1 更改变量的类型settype()
例如:
$num=3.014; settype($num,'int');//将$num更改为整数类型
2.2 类型转换
注意:类型转换会生成一个拷贝,原变量保持不变。
$num=3.14; $newNum=(integer)$num;
在脚本内容需要类型转换的情况下,PHP会自动为你进行变量类型转换。自动转换是临时的,如果想让一个变量持久的保存一种特定的数据类型,就需要明确地改变类型。
如果试图把两个字符串相加,由于它们包含数字,在相加的时候,PHP会把字符串转换成数字,例如:“30cm"+"40cm",结果为:70
注意:在把字符串转换为整数或浮点数的时候,PHP将会忽略任何非数字字符,字符串将会被截断,并且,从第一个非数字字符开始向后的所有字符都被忽略。
何时应该测试数据类型?
对于要使用指定数据类型的函数,首先验证函数被指定的值具有正确的数据类型是一个好的习惯。
三、操作符和表达式
1.连接操作符
连接操作符用一个句点"."表示,它把两个操作数都当作字符串连接起来。例如:"hello"." world" ,返回:"hello world"
不管连接的操作数是什么数据类型,它们都会被当作字符串对待,并且结果也总是字符串类型。
什么情况下使用,连接操作符?
当需要把某种类型的表达式结果和一个字符串组合到一起的时候使用,例如:$cm=212;echo "the width is ".($cm/100)." meters";
等同操作符:===,左边等于右边并且它们类型相同。例如:$x===4 结果:true
操作符:xor,左边或右边为true,但不都为true
逻辑操作符:
或:||(or), 且:&&(and),非:!,优先级:||高于or,&&高于and
优先级:
++,--,(cast)
/,*,%
+,-
<,<=,>,>=
==,===,!=
&&
||
=,+=,-=,/=,*=,%=,.=
and
xor
or
注意:逻辑操作符,一般使用||和&&,并且利用括号来改变操作符的顺序。
四、常量
用define()定义一个常量,常量名应该大写,访问时前面不需要加$符号。
define("THE_YEAR","2017"); echo "It is the year ".THE_YEAR;输出:It is the year 2017
PHP内建常量,例如:__FILE__,返回PHP引擎当前所读取的文件名,__LINE__返回该文件的当前行数。
五、流程控制
//if语句 echo "\n"; $mood="happy"; if($mood=="happy") { echo "Hooray! I'm in a good mood!"; } echo "\n"; //elseif语句 $mood="sad"; if($mood=="happy"){ echo "Hooray! I'm in a good mood!"; }elseif ($mood=="sad"){ echo "Awww. Don't be down!"; }else{ echo "I'm neither happy nor sad,but $mood."; } echo "\n"; //switch $mood="sad"; switch ($mood){ case "happy": echo "Hooray! I'm in a good mood!"; break; case "sad": echo "Awww. Don't be down!"; break; default: echo "I'm neither happy nor sad,but $mood."; break; } echo "\n"; //? $mood="sad"; $text=$mood=="happy"?"I am in a good mood!":"I am in a $mood mood."; echo $text; echo "\n"; //while $counter=1; while ($counter<=12){ echo $counter." times 2 is ".($counter*2)."<br/>"; $counter++; } //do...while echo "\n"; $num=1; do{ echo "The number is: ".$num."<br/>"; $num++; }while($num>200 && $num<400); echo "\n"; //for for($counter=1;$counter<=12;$counter++){ echo $counter." times 2 is ".($counter*2)."<br/>"; } //break;语句跳出循环。 //continue;进入下一次循环。
零、一个未定义的变量或者一个空字符串,做为条件时都为false,其他值都为true。
六、函数
函数分为两类:
1.内建于语言中的函数
例如:
strtoupper("Hello Web!");//转换成大写字母
$num=-321;
$newnum=abs($num);求绝对值
注意:print()和echo()函数并不是真正的函数,它们用来设计把字符串输出到浏览器的语言构造。
2.自己定义的函数
function Add($a,$b){ return $a+$b; } echo add(3,5);
注意:函数名是不区分大小写的,变量区分。
3.变量作用域
函数只能访问参数变量,如果需要访问上下文变量必须的先用global声明,global声明的变量表示对原变量的直接引用,修改值会影响到原始值。
参数是变量的副本,在函数中修改它,对于函数块以外的部分没有任何影响。
$life=42;
function meaningOfLife() { global $life; //访问除参数以外的变量,必须先用global声明; echo "The meaning of life is ".$life; } meaningOfLife();
4.static声明的变量,在函数多次调用之间能保持自身的状态
function numberHeading($txt) { static $num_of_calls=0;//函数静态变量,第一次调用时执行,以后调用时忽略此语句。 $num_of_calls++;//每次调用时会在之前的基础上增加,即变量保留上一次调用的值。 echo "<h1>".$num_of_calls." ".$txt."</h1>"; } numberHeading("Widgets"); echo "<p>We build a fine range of widgets.</p>"; numberHeading("Doodads"); echo "<p>Finest in the world.</p>";5.设置参数默认值
function fontWrap($txt,$fontsize="12pt") { echo "<span style=\"font-size:$fontsize\">".$txt."</span>"; } fontWrap("A Heading<br/>","24pt"); fontWrap("some body text<br/>");
注意:可以为参数设置一个或多个默认值,但这些参数必须放在参数列表的最后。
6.引用类型参数
function addFive(&$num) { $num+=5; } $orignum=10; addFive($orignum); echo $orignum;7.检测函数是否存在,由于php引擎的版本不同,在部署在不同版本时,有些函数需要先检测。
function_exists($txtName);
七、数组
a.数值数组
可以用array()或数据操作符[]创建一个数组。
1.创建新的数组且有多个元素填充时,用array()函数
$rainbow=array("red","orange","yellow");
2.创建新数组,开始时只用一个元素,或者对已存在的数组添加一个元素时。
$rainbow[]="red"; $rainbow[]="orange"; $rainbow[]="yellow";不管是array()函数还是数组操作符创建的数组,都可以使用数据操作符添加元素。
$rainbow=array("red","orange","yellow"); $rainbow[]="green";//向数组添加元素注意:用数组操作符创建数组或向数据添加元素时,都不需要指定数组下标。
b.关联数组
$character=array("name"=>"Bob","occupation"=>"superhero","age"=>30,"special power"=>"x-ray vision"); echo $character["age"]; $character["supername"]="Mega X-Ray Guy";//添加元素 echo "\n"; echo $character["supername"];
注意:关联数组和数字数组的区别在于键名,数字数组键名是数字,关联数组键名是有意义的单词。
注意:数字数组和关联数组,一个数组中可以是数值或字符串,同时存在。但不能是日期类型。
c.多维数组
包含其它数组的一个数组。
$characters=array(array('name'=>'Bob',"occupation"=>'superhero',"age"=>30,'special power'=>'x-ray vision'),
array('name'=>'Sally','occupation'=>'superhero','age'=>24,'special power'=>'superhuman strength'),
array('name'=>'Jane','occupation'=>'arch villain','age'=>45,'special power'=>'nanotechnology'));
echo $characters[2]['age'];//访问元素
echo "<br/>";
//遍历二维数组
foreach ($characters as $c)
{
while (list($k,$v)=each($c))
{
echo "$k ... $v <br/>";
}
echo "<hr/>";
}
操作数组的相关函数:
count()sizeof()——统计元素的个数。
each()和list()——遍历数组并返回其键和值的应用中,这两个函数通常一起出现。
foreach()——用于遍历数组。
reset()——把指针指向数组的开始位置。
array_push()——在一个已有数组的末尾添加一个或多个元素。相对应的在开头添加的函数array_unshift()
array_push($existingArray,"element 1","element 2");
array_pop()——删除最后一个元素,并返回删除的元素。相对应的删除第一个元素array_shift()
$last_element=array_pop($existingArray);
array_merge()——合并两个以上的数组,并返回合并后的数组。
array_keys()——返回给定数组的键名的数组
array_values()——返回给定数组的值的数组
shuffle()——随机排队数组元素列表。
相关文章推荐
- php 5.3新增的闭包语法介绍function() use() {}
- PHP 反射技术
- 9.PHP.ini配置文件中文(2)
- 性能测试TPS目标值确定-二八原则
- 【PHP学习】vol.1/Hello World
- 使用Phar来打包发布PHP程序(什么是phar包)
- 学习php自行开发mvc框架过程(二)
- 学习php自行开发mvc框架过程(一)
- PHP的imagefilledarc()函数参数详解
- php连接sqlserver
- php开发 API接口注册,登录,查询用户资料
- 给php代码添加规范的注释phpDocumentor
- php扩展xdebug安装
- PHP闭包 function() use()
- PHP获取毫秒时间戳,利用microtime()函数
- PHP搭建自己的MVC框架 1
- MVC框架的开发(上)-框架开发的准备
- PHPstorm激活
- php项目优化
- aria2 让下载提速