php基础知识

1.开始结束标记<? ... ?>

2.定义变量:$变量名 例:$str="锦清笋";不需要指明数据类型

3.输出语句:

(1)echo "hello world!";---echo命令

(2)print();输出语句,是函数,有返回值。输出成功返回1,失败返回0。

(3)printf();格式化输出字符串。例:printf("%d,%f",12,12.3);

(4)sprintf();格式化拼接字符串,不是输出语句,只能将字符串拼接。

(5)print_r();输出数组、对象等复合数据类型

4.数据类型:

(1)简单数据类型:

Boolean 布尔型

string 字符串型

integer 整型

float 浮点型

(2)复合数据类型:

array 数组

object 对象

(3)特殊数据类型:

resource 资源

null 空值

5.数据类型转换:

在变量前加上括号括起来的类型名称即可。

6.检测数据类型:

is_bool 检查变量是否是布尔类型

is_string ....

is_float或is_double ....

is_integer 或 is_int ....

is_null ....

is_array ....

is_object ....

is_numeric 检测变量是否为数组或由数字组成的字符串

7.声明和使用常量:

定义语法:define(‘PRICE’,100);

echo PRICE;

8.变量作用域:

局部变量:即在函数的内部定义的变量,其作用域是所在的函数

全局变量:即被定义在所有函数以外的变量,其作用域是整个php文件,但是在用户定义的函数内部不可用。想在用户定义的函数内部使用全局变量,要使用global关键词声明。

例:$a=123;

function test()

{

global $a;

echo $a;

}

静态变量:能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值。使用静态变量时,先要用关键字static来声明变量,需要把关键字static放在要定义的变量之前。

9.预定义变量:通过预定义变量可以获取用户会话、用户操作系统的环境和本地操作系统的环境等信息。如:

$GLOBALS,$_SERVER,$_GET,$_POST,$_REQUEST,$_COOKIE,$_SESSION,$_FILES.

10.字符串运算符:句号:“.”;连接字符串

特别是拼写sql语句时:".$变量名."

11.逻辑运算符:逻辑异或:^或xor 当一个为真,一个为假时,结果为真,其他为假。

恒等:===

优先级:||在and之前,or在and之后。

12.@错误屏蔽:@错误屏蔽运算符可以对程序中出现错误的表达式进行操作,进而对错误进行屏蔽,其使用的方法就是在错误的表达式前加“@”即可。它只是对错误信息进行屏蔽,并没有真正解决错误。

13.定义和调用函数:函数名不区分大小写

function test($var1,$var2)

{

函数体

}

test($var1,$var2);

函数的返回值:使用return返回单个值,和使用list()语言结构返回多个值。

传值调用:$变量名

传址调用:&$变量名

14.Form表单:

两种提交方式:get:将表单数据当做url的一部分传过去;url格式:http://地址:端口/目录/文件?var1=value1&...varn=valuen最长1024k

post:相比get而言,更安全,并不会导致因数据过长而引起url的数据丢失

使用超链接传值时必须用get来接收:<a href="user_add.php?u>ADD</a> 接收:$uuid"];

注意:<?=...?>的格式只有在没有判断语句时才能使用。

对表单传递的变量进行编码和解码:PHP中实现对查询字符串进行URL编码可以通过函数urlencode()实现,该函数的使用格式如下:string urlencode(string str);对URL编码后的查询字符串进行解码,可以通过urldecode()函数实现,该函数的使用格式如下:string urldecode(string str);

15.PHP连接数据库:

步骤: 一、建立连接------mssql_connect(server,uid,pwd);

二、指定database-------mssql_select_db(databasename);

三、执行sql------mssql_query($sql,$link);

四、处理记录集-------资源类型数据,格式:bof---数据---eof

五、以特定格式读取数据-----mssql_fetch_array()....

六、释放相关资源、关闭连接------mssql_free_result($result);mssql_close();

16.数组:php的数组由键值和value值组成

定义:$array = array("键值"=>"value","键值"=>"value","键值"=>"value");如果不给键值赋值,默认从0开始的int值

相关函数:(1)in_array("值",数组名); 返回bool型-----查看数组中是否存在某value值

(2)array_key_exists("key值",数组名); 返回bool型-----查看数组中是否存在某键值

(3)array_keys(数组名);---将数组键值返回出来形成一个新数组,此键值作为新数组的value值

(4)array_values(数组名);---将数组value值返回出来形成一个新数组,此值作为新数组的value值

(5)key(数组名);----返回当前指针指向的元素key值

(6)current(数组名);----返回当前指针指向的元素value值

(7)next(数组名);----挪动当前数组指针到下一步

(8)reset(数组名);----恢复数组指针,指向第0个元素

(9)end(数组名);----将指针挪向最后一个元素

(10)prev(数组名);----将指针向前挪动一位

(11)foreach(数组名 as $key=>$value)

{

$key是键值,$value是value值,实现数组遍历

}

(12)each(数组名);----将当前数组元素依次取出(自动挪动指针)并放到一个新的数组中

(13)array_shift(数组名);----返回数组中第一个元素值

(14)array_pop(数组名);----返回数组最后一个元素值

(15)array_push(数组名,value);----向数组中追加元素

(16)array_unshift(数组名,value);----在数组最前面添加元素

(17)array_pad(数组名,数组长度,value);----向数组中追加多个元素,对数组副本操作,不改变原数组,返回一个新数组

(18)count();----返回个数

(19)array_unique(数组名);----去掉数组中重复部分,操作数组副本,不改变原数组,返回新数组

(20)sort(数组名);----从小到大升序排列数组value值,一般针对int型value值,返回bool型,成功返回true

(21)rsort(数组名);----从大到小,逆序排列数组value值

(22)array_combine(数组1,数组2);----将数组1的value值作为key,数组2的value值作为value值,形成一个新数组

(23)array_merge(数组1,数组2,数组3...);----合并多个数组,将多个数组value值依次合并,合为一个数组

(24)array_slice(数组名,int,int);----从目标数组截取元素,形成一个新数组。开始位置为第二个参数,结束位置为第三个参数。若第三个参数不写,则默认是截取到最后。

(25)array_splice();----用法同array_slice();但是其截取部分从原数组中删除

(26)explode("字符依据",目标字符串);----将字符串按照一定的依据拆分成数组

(27)implode("字符依据",目标数组);----将数组元素按照依据组合成一个字符串

(28)range(mixed low,mixed high[number step]);----生成数组,例:range(1,100,8);---即从1到100,每8位取一个数,组成一个数组

(29)shuffle(数组名);----用于将数组进行随机排序

(30)array_sum(数组名);----对数值型数组元素值进行求和

(31)array_chunk(数组名,int);----分割目标数组,返回一个新数组,其中数组的每个元素都是一个一维数组,int参数为分割成的一维数组的长度

17.Cookie和会话控制:

Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie是由Web服务器保存在客户机上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web站点都可以访问Cookie信息。

存在server端的是session,存在client端的是cookie,它们用来存储全局变量。

设定Cookie值:setcookie("名","值");

通过Cookie数组取值:$_cookie["名"];

设置生成期:setcookie("名","值",time()+1800);生成期为当前时间加1800秒之后。

删除cookie: setcookie("名","",time()-3600);中间值设置为空,并将当前时间减去3600秒。

Cookie数组:setcookie("名[key]","值"); 使用foreach读取。

在PHP中可以通过$_COOKIE预定义变量访问Cookie的值。如果设置了php.ini中的register_long_arrays,那么就能够应用$_COOKIE和$HTTP_COOKIE_VARS;如果在php.ini中还设置了register_globals,那么就可以在PHP中作为全局变量使用各个Cookie值。但是,更改php.ini中的两个文件设置,容易对PHP的安全构成威胁,不推荐使用该方法,建议使用更新的$_COOKIE。

会话ID的传送

会话ID的传送有两种方式,一种是Cookie方式,另一种是URL方式。

Cookie传送方式:

这是最简单的会话方式,但是有些客户可能限制使用Cookie,如果客户限制使用Cookie的条件下,仍要继续工作,那就要通过其他方式来实现了。

URL传送方式:

在该方式中,URL本身用来传送会话,会话标志被简单地附加到URL的尾部,或者作为窗体中的一个变量来传递。例:<a href="user_add.php?u>ADD</a>

会话ID的生成:

PHP的会话函数会自动处理ID的创建,但也可以通过手工方式创建会话ID。它必须是不容易被人猜出来的,否则有安全隐患。

一般推荐生成会话ID使用随机数发生器函数srand(),函数声明如下:

srand((double)microtime()*1000000);

在调用该函数后,要想生成一个唯一的会话ID,还必须使用下面的语句:

md5(unique(rand()));

Session会话:

创建会话的步骤:启动一个会话,注册会话变量,使用会话变量和注销会话变量。

(1)启动一个会话:》通过session_start();函数创建会话,函数声明为:bool session_start(void);

》通过设置php.ini自动创建会话:设置php.ini中的session.auto_start选项,激活该选项即可自动创建会话(配置值改为1),但是使用该方法启动auto_start会导致无法使用对象作为会话变量。

(2)注册会话变量:会话变量被启动后,全部保存在数组$_session中。通过数组$_session,直接给该数组提添加一个元素即可创建一个会话变量: $_session[session_name]=session_value;

(3)使用会话变量:if(!empty($_session[session_name])){$myvalue=$_session[session_name]}

(4)注销会话变量:注销某个session成员:unset($_session[session_name])

注销所有会话功能:$_session=array();然后使用session_destory();函数清除会话ID。

18.字符串处理:

(1)获取字符串长度:int strlen($str);

(2)将指定字符串转换成大写:strtoupper($str);

(3)将首字母转换成大写:ucfirst($str);

(4)字符串与HTMl相互转换:htmlspecialchars($str);----将字符串中某些特殊字符转化成html格式

(5)去除字符串的空格:trim()---去两遍空格,ltrim()----去左边空格,rtrim()----去右边空格

(6)substr_count($str,"value");查询某字符在目标字符串中出现的个数

(7)strpos($str,"value");----定位字符位置,返回int

(8)防止单引号破坏sql语句:自动转义函数:addslashes();

<?php

$str = "Is your name O'reilly?";

// 输出:Is your name O\'reilly?

echo addslashes($str);

?>

(9)截取字符串:substr($str,start_int,end_int);---return $newstr

(10)填充字符串:string str_pad ( string input, int pad_length [, string pad_string [, int pad_type]] )

例:<?php

$input = "Alien";

echo str_pad($input, 10); // produces "Alien "

echo str_pad($input, 10, "-=", STR_PAD_LEFT); // produces "-=-=-Alien"

echo str_pad($input, 10, "_", STR_PAD_BOTH); // produces "__Alien___"

echo str_pad($input, 6 , "___"); // produces "Alien_"

?>

(11)字符串的比较:int strcmp ( string str1, string str2 )----按逐个字符的ascll码进行比较,如果返回等于0,则相等;大于0,则str1大于str2;小于0,则str1小于str2。

(12)数字字符串的格式化:string number_format ( float number [, int decimals [, string dec_point, string thousands_sep]] )

该函数可以有1个,2个,或4个参数,但不能使三个。decimals意思是取小数点后几位,dec_point用来代替小数点,thousands_sep用来代替千位分隔符。

(13)查找和替换:

查找:string strstr ( string haystack, string needle )

例:<?php

$email = 'user@example.com';

$domain = strstr($email, '@');

echo $domain; // prints @example.com

?>

替换:mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count] )----区分大小写

mixed str_ireplace ( mixed search, mixed replace, mixed subject [, int &count] )----不区分大小写

(14)URL字符串解析:array parse_url ( string url )将url地址按照其构成解析成一个特殊数组。数组结构为:

Array

(

[scheme] => http

[host] => hostname

[user] => username

[pass] => password

[path] => /path

[query] => arg=value

[fragment] => anchor

)