php基础语法:
php的标记风格:
1.xml标记 <?php ?>推荐使用 2.脚本风格<script language="php"> </script> 3.简短风格<? ?> 4.asp风格 <% %> 3.4风格需要在php.ini中设置
2.php的注释: 1.单行注释c++风格 // 2.多行注释c风格 /**/ 多行注释不允许嵌套 3.shell风格注释 # (注:单行注释中不要出现 ?>)
一个简单的php程序
<html>
<head>
<title>hello,php</title>
</head>
<body>
<?php
echo "hello,php!";
phpinfo();
?>
</body>
</html>
php的数据类型
php共支持8种原始类型,包含4种标量类型(boolean布尔型,integer整形,float/double浮点型,string字符串),两种复合型(array数组,object对象),两种特殊类型(resource资源,NULL) 注:变量的类型是由程序运行的上下文决定的
标量数据类型(数据结构中最基本的单元,只能存储一个数据):
1.boolean型:最简单的类型,只有true(真)和false(假)两个值,设定一个布尔型的变量,只需将true和false赋值给变量即可,通常其应用在条件或者循环语句中。例如:
<?php
$boo = true; //声明一个boolean类型变量,赋值为true
if($boo == true){ //判断变量$boo是否为真
echo "变量$boo为真!"; //为真,输出“”中的话
}else{
echo "变量$boo为假!"; //为假输出“”中的话
}
?> 注意:本例中的$是变量的标识符,所有的变量都是以$开头的,无论是声明变量还是调用变量都应使用$符。一些情况下 0 0.0 “0” “” 只生命没有赋值的数组也别认为是false
string型:连续的字符序列,由数字,字母,和符号组成,每个字符占一个字节,可以是计算机所能表示的一切字符的集合,定义方式分别为:
(常用这两种) 另外还有界定符 <<< (使用少不介绍)
‘’<?php
$a = '字符串';
echo "$a"; //会输出$a的值 即:字符串三个字
?>
“”<?php
$a = "字符串";
echo ‘$a’; //输出是使用单引号会直接输出单引号中的内容
?>
注:双引号和单引号的区别为:双引号包含的变量会自动被替换成实际数值,单引号包含的变量则按普通字符串输出(给变量赋值时候使用单双引号都一样,只是在输出时候使用两者有区别):例如:
<?php
$i='只会看到一遍'; //声明一个字符串变量
echo "$i"; //双引号输出 输出结果为 只会看到一遍
echo "<p>"; //段标记
echo '$i'; //单引号输出 输出结果为$i
?>
两者另外一个区别就是对转义字符的使用,单时,只要对单转义即可,双时,还需注意 “ $等字符也需要转义。
常用的转义字符: 1. \n 换行 2.\r 回车 3. \t 水平制表符 4.\\ 反斜杠 .......注:\r \n在windows中可当作回车,但在linux中有区别,如果对非转义字符使用了\ 则会直接输出。在定义简单的字符串时,应尽量使用单引号,双引号会使php花费时间处理字符串的转义和解析
integer型:只能包含整数,可以是正数和负数 范围 -2147483648 到 +2147483647可以用十进制,八进制(数字前必须为0)和十六进制(数字前加0x) 注意:如果在八进制中出现了非法数字(8和9),则后面的数字会被忽略 例如:
<?php
$s1 = 1234567890; //声明一个十进制整数
$s2 = 0x1234567890;//声明一个十六进制的整数
$s3 = 01234567890;//声明一个八进制的整数
$s4 = 01234567;//另外声明一个八进制的整数
echo '输出结果分别为:<p>';
echo '十进制的'.$s1.'<p>';//输出十进制的整数
echo '十六进制的'.$s2.'<p>';
echo '八进制的';
if($s3 == $s4){ //判断s3和s4是否相等
echo '$s3 = $s4='.$s3; //如果相等输出
}else{
echo '$s3 != $s4'; //如果不等,输出
}
?>
输出结果分别为:
十进制的1234567890
十六进制的78187493520
八进制的$s3 = $s4=342391
float型:用于存储数字,或者小数,和整形不同的是有小数位,精度比整数大,范围1.7E-308到1.7E+308,两种书写格式,标准格式和科学记数法,例如:
<?php
echo '圆周率的三种书写方式:';
echo '第一种:pi='.pi().'<p>';//调用pi()函数输出圆周率
echo '第二种:pi='. 3.1415926.'<p>';//普通书写格式
echo '第三种:pi=' . 314159265359E-11.'<p>';//科学记数法
?>
输出结果为:
圆周率的三种书写方式:第一种:pi=3.1415926535898
第二种:pi=3.1415926
第三种:pi=3.14159265359
注意:浮点型的数值只是一个近似值,所以应尽量避免浮点型数值之间比较大小,结果往往不准确复合型数据类型:包括数组和对象两种
array数组:一组类型相同的变量的集合,如标量数据,数组,对象,资源等
$array = ('value1','value2'....)或者$array[key] = 'value' 或者$array = array(key1 => value1,key2 => value2....)
数组中的每个数据称为一个元素,元素包含索引和值两部分,索引可以由数字或者字符串组成,值可以是多种数据类型,key是元素的下标,value是下标对应的值,例如:
$arr1 = array('this','is','a','example');
$arr2 = array(0 => 'php',1=>'is','the'=>'the','str'=>'best');
$arr[0] = 'temname';
object对象:对象是类的实例,使用new来创建
特殊数据类型(resource资源和null空值)
资源:一种特殊的变量,又名句柄,保存到外部资源的一个引用,通过专门的函数建立使用。在使用资源时,系统会自动启用垃圾回收机制,释放不再使用的资源,避免内存消耗殆尽,因此很少需要手工释放
null:特殊的值,表示变量没有值,没有为变量设置任何值,不区分大小写。被赋予null的情况为:还没有赋任何值,被赋值为null,被unset()函数处理过的变量。例如:
<?php
$string1 = null;//直接赋值为null
$string3 = "str" ;//赋值str
if(is_null($string1)) //判断$string是否为空
echo "string1 = null";
if(is_null($string2))
echo "string2 = null";
unset($string3);//unset函数释放$string3 unset()用来销毁指定的变量
if(is_null($string3))
echo "string3 = null";
?>
输出结果为: string1 = null string2 = null string3 = null
转换数据类型:在变量前加上用括号包起来的类型名称即可,还可以通过settype()函数完成,允许转换的类型为:
(boolean) (string) (integer) (float) (array) (object)
注意:转换成boolean时,null,0和未赋值的变量或数组会被转成false,其他为真,转换整型时,boolean的false转成0,true转成1,浮点型的小数部分被舍去,字符型蜀国以数字开头就截取到非数字位,否则输出0,如果字符串转为整型或浮点型时,把数字部分转成整形,去掉后面的字符串,如果数字中含有小数点,取小数点前一位
boolean settype(mixed var,string type); var为指定的变量,string为指定要转换的类型 例如:
<?php
$num = '3.1415926r*r';
echo '使用(integer)转换变量类型';
echo (integer)$num;
echo '<p>';
echo '输出原始变量$num的值:'.$num;
echo '<p>';
echo '使用settype函数转换$num的类型';
echo settype($num,'integer');
echo '<p>';
echo '输出变量$num的值:'.$num;
?>
输出的结果为:
使用(integer)转换变量类型3
输出原始变量$num的值:3.1415926r*r
使用settype函数转换$num的类型1
输出变量$num的值:3
可以看出使用integer操作符能直接输出转换后的变量的类型,而且原变量不发生变化,而settype()函数的返回值是1,也就是true,原变量被改变检测数据类型:对不同类型的数据进行进行检测,判断是否为某种类型,为真返回true,否则返回false:
is_bool is_string........
检测函数的用法都一样,举例:
<?php
$boo = "043112345678"; //由数字组成的字符串变量
if(is_numeric($boo)) //is_numeric()判断是否由数字组成
echo '结果是:'.$boo;
else
echo 'sorry';
?>
输出结果为:结果是:043112345678
php常量:值不变的量,被定义后在脚本的任何地方都不会变,由数字,字母,下划线组成,首位不能是数字。
php中使用define()函数定义常量,格式为:define(string constant_name,mixed value,case_sensitive=true); constant_name为必选参数,是常量的名称,即标识符。 value必选参数,是常量的值。case_sensitive可选参数,制定是否大小写敏感,为true表示不敏感。
获取常量的方法:使用常量名直接获取或者使用constant()函数,两者效果一样,但是函数可以动态的输出不同的常量,较灵活。函数的语法格式为:
mixed constant(string const_name); const_name是常量的名称,亦可以为存储常量名的变量。判断常量是否定义可以使用defined()函数,格式为:bool defined(string constant_name); 成功返回true,失败返回false。实例:
<?php
define("MESSAGE","能看见一次");//定义一个常量
echo MESSAGE."<BR>";//输出
echo Message."<BR>";//小写输出,提示未找到
define("COUNT","能看见多次",true);//定义常量并设置为大小写不敏感
echo COUNT."<BR>";
echo Count."<BR>";
$name = "count";//定义存储常量名的变量
echo constant($name)."<BR>";
echo (defined("MESSAGE"))."<BR>";//判断如果常量被定义,返回true,显示为1
?>
输出结果为:
能看见一次
Message
能看见多次
能看见多次
能看见多次
1
预定义常量:用于获取php中的信息:在使用上和用户自定义的常量没有区别
__FLIE__默认常量,php程序文件名。 __LINE__默认常量,php程序行数。 PHP_VERSION内建常量,php程序的版本。 PHP_OS内建常量,执行php的操作系统,如windows。此外还有TRUE FALSE NULL E_ERROR E_WARNING E_PARSE E_NOTICE 。注意__FILE__和__LINE__中是两条下划线
实例:
<?php
echo '当前的文件路径:'.__FILE__;
echo "</br>当前的行数:".__LINE__;
echo "</br>当前php的版本信息:".PHP_VERSION;
echo "</br>当前的操作系统:".PHP_OS;
?>
输出的结果为:
当前的文件路径:D:\wamp\www\php\shuju.php
当前的行数:94
当前php的版本信息:5.5.12
当前的操作系统:WINNT
php变量:程序执行过程中数值可以变化的量,通过变量名标识,变量名实质就是计算机内存单元的命名,借助变量名即可访问内存中的数据,在php中使用变量之前不需要声明,只需为其赋值即可,变量名称用$和标识符表示,变量名区分大小写。变量赋值:对于字符串和数字类型的变量可以用“=”实现。格式为:
<?php $name = value ?> 注意命名规则:数字,字母,下划线不能以数字和其他不能使用的字符开头
除了直接赋值,还可以使用变量间赋值,实例:
<?php
$string1 = "spcn"; //声明变量$string1
$string2 = $string1; // 使用$string1初始化$string2
$string1 = "zhuding" ; //改变$string1的值
echo $string2;
?>
输出的结果为:spcn
另外一个是引用赋值:引用是指用不同的名字访问同一个变量内容,当改变其中一个变量的值时,另一个也跟着发生变化,使用&符号表示引用;
实例:
<?php
$i = "spcn";
$j = &$i;//使用引用赋值,
$i = "hello,$i";//重新给$i赋值
echo $j;
echo "</br>";
echo $i;
?>
输出结果为:hello,spcn hello,spcn
引用和拷贝的区别在于:拷贝是将原变量的内容复制,开辟一个新的内存空间来保存,引用是给变量的内容再起一个名字。
变量的作用域:变量在使用时要符合其定义规则,必须在有效范围内使用,如果超过范围就失效。另外,在函数内部定义的变量(局部变量),其作用域为所在的函数,如果在函数外赋值,就是完全不同的另一个变量(全局变量),在退出声明变量的函数时,该变量及相应的值就会被清除。实例:
<?php
$example = "在函数外"; //声明全局变量
function example(){
$example = "在函数内";//局部变量
echo "在函数内输出的内容是$example.</br>";
}
example();//调用函数,输出变量值
echo "<hr/>";
echo "在函数外输出的内容是$example.</br>";//输出全局变量
?>
输出的结果为:
在函数内输出的内容是在函数内.
在函数外输出的内容是在函数外.
静态变量:可以用来记录浏览者的人数,用户访问和离开时都能保留目前浏览者的人数,聊天室记录用户的聊天内容等 实例:
<?php
function zdy(){
static $message = 0;//初始化静态变量
$message+=1;//静态变量加1
echo $message."";//输出静态变量
}
function zdy1(){
$message = 0;//声明局部变量
$message +=1;//局部变量加1
echo $message."";}
for($i=0;$i<10;$i++) zdy();//输出1~10
echo "<br>";
for($i=0;$i<10;$i++) zdy1();//输出10个1
echo "<br>";
?>
输出结果为:12345678910 1111111111
注意:zdy()输出1~10而zdy1()输出10个1,因为前者含有静态变量,而zdy1()是一个普通变量,初始化都为0,进入for循环,静态变量的函数会保留$message的值,静态变量只会初始化一次,而普通变量的函数被zdy1()调用后,其变量$message失去了原来的值,重新被初始化
在函数内部使用全局变量:实例:
<?php
$zy = "不会看到";//声明全局变量$zy
$zyy = "会看到";//声明全局变量$zyy
function lxt(){
echo $zy."<br>";//$zy不能被调用
global $zyy;//global关键字在函数内部定义全局变量,可以调用全局变量
echo $zyy."<br>";//调用$zyy
}
lxt();
?>
输出结果为:会看到
可变变量:是一个独特的变量,动态的改变一个变量的名称,原理是该变量的名称由另一个变量的值确定,通过在变量前再多加一个$符号实现。示例如下:
<?php
$change_name = "trans";
$trans = "you can see";
echo $chang_name;
echo "<br>";
echo $$change_name;//通过可变变量输出$trans的值
?>
输出结果为:trans you can see
php预定义变量:系统提供的可以获取各种信息的变量:
$_SERVER['SERVER_ADDR']当前运行脚本所在的服务器ip地址。$_COOKIE $_SESSION $_GET $_POST.........作用参照手册