PHP入门——基本巩固

----------一、变量

----------二、运算

----------三、控制结构

----------四、函数

----------六、字符串

----------七、数组

----------八、全局变量与常量

----------九、文件管理入门

一、变量

①类型

整形、浮点型、字符串、布尔型、数组、对象、null、资源

gettype();  获取类型

is_类型名();  返回布尔型; 例如 is_string('aaa');

②变量检测

isset();  变量检测是否存在,返回布尔型, null是false;

empty();  判断是否为空,"空字符串、0、null"都为空;

③、打印调试

echo  打印字符串方便

print_r  打印数组方便

var_dump  打印变量类型及齐值

④、类型转换

settype($var,type);  把变量$var类型转为type;

$字符串*1  or  $字符串+0  使字符串转为整形;

$整形 . "  整形拼接空字符串 使整形转为字符串

⑤、赋值

=  赋值:  $a=1; $b=2;  $a=$b;

&  引用赋值:  $a=&$b;此时$a与$b关联,动一个引动另一个;

⑥、变量销毁

unset();  清除变量

⑦动态变量名

$$变量名;  例如:$a='liu'; $$a='baba'; 此时$$a等同于$liu;

二、运算

①运算符

+ - * / %  加 减 乘 除 取余;

②比较运算符  结果只有:true/false;

> , < , == , === , != , !==  大于 , 小于 , 等于 , 全等于 , 不等于 , 绝对不等于;

  注: 如果值可能包含0,空字符串,为了正确比较,使用全等于  ===  因为0是false;

③三元运算符

判断 ? 值1 : 值2;

用法: $a=1; $b=5;  $c=($a>$b?$a:$b);  判断$a是否大于$b,ture给$c赋值$a,false给$c赋值$b;

④逻辑运算符

&&  并且   只要有一个假的,最终结果为假;

||   或  只要有一个真的,最终结果为真;

  注:逻辑运算符有齐短路特性

⑤递增递减

++;  递增

--;    递减

$a=1;  $b=$a++;  结果$b=1;$a=2; 先给$b赋值,然后对$a递增操作;

$a=1;  $b=++$a;  结果$a=2;$b=2; 先递增运算,然后赋值;

⑥字符串运算

.  拼接字符串 , 英文符号的句号;

  注:echo $a,$b; 比 echo $a.$b; 要快,因为拼接字符串需要运算;

⑦位运算符

$a & $b   And(按位与)       将把 $a 和 $b 中都为 1 的位设为 1。
$a | $b Or(按位或)    将把 $a 和 $b 中任何一个为 1 的位设为 1。
$a ^ $b Xor(按位异或)   将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
~ $a    Not(按位取反)   将 $a 中为 0 的位设为 1,反之亦然。
$a << $b Shift left(左移) 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $b Shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

三、控制结构

①赋值

=  一个等于号;

②switch case  分支语句

 1     switch (表达式){
 2         case 值1:
 3             执行:
 4             break;
 5         case 值2:
 6             执行:
 7             break;
 8         default:
 9             没有匹配项执行:
10     }

 

③while 循环

  while(条件){执行};  在条件范围内一直执行;

④for循环

   初始条件a ; 判断条件b ; 执行体c ; 状态改变d;

1   for(a;b;d){
2           c;
3   }

 

⑤break与continue

break  破坏循环、破坏执行;

continue  跳过本次循环,继续执行之后的(单词有''延期/继续''的意思);

四、函数

  一段封装好的代码,随时可以调用;

①函数定义 格式

function 函数名(参数){ 执行语句;  return; }

命名不区分大小写

②函数执行与返回流程

  函数调用时,代码执行权进入函数;

  当函数所有语句执行完毕或'return',函数返回,交出执行权;

  注:return只能返回一个值;

③函数参数传递方式

1     function t($a){        //此处$a是形参,与外界无关
2             $a += 1;        //这个$a如何变化与外界
3     }
4     $a=3;
5     t($a);
6     echo $a;    //$a还是3;  
1 1     function t(&$a){        //此时形参$a指向外部的$a
2 2             $a += 1;        //函数内的$a改变会影响外部
3 3     }
4 4     $a=3;
5 5     t($a);
6 6     echo $a;        //$a输出4;    该方法不推荐,会影响函数外

 

 ④作用域

  在PHP页面中的变量是全局变量,在函数内部的变量是局部变量

  要在函数中声明全局变量:  global  $变量;

⑤动态调用函数

  使变量的值作为函数名,用变量调用函数;

1     function abc(){
2             echo "hello";
3     }
4     $a = 'abc';
5     $a();   //此时 $a(); 等同于 abc();   因为$a => abc , 所以 $a(); => abc();

⑥时间戳函数

  时间戳:1970-1-1 00:00:00 到现在所经过的秒数

  time();  返回秒数;

  microtime();  返回: 毫秒数  与  秒数;

  microtime(ture);  只返回毫秒数;

⑦时间戳格式化

  date(); 

    Y-年;m-月;d-日;  w-周,返回0-6; N-周,返回1-7(PHP5.1以上);

    h-时;i-分;s-秒;     h:12时制;H:24时制;

⑧日期解析

  mktime();  把日期转成时间戳  ( h,i,s,m,d,Y );

  strtotime();   strtotime('now');返回现在时间戳  strotime('-1day');返回过去一天的时间戳;

⑨检测日期

  checkdate();  检测日期是否合法  checkdate(2,29,2001);返回false

五、字符串

①定义方式

  $str='string';  定义一段字符串

  定义大段文本<<<定界符,标记必须大写,结束标记必须单独占用一行且以 ; 号结束

1 $a=<<<EOF
2 <html>
3 </html>
4 EOF;

②单双引号的区别

'  '  单引号时  \'  \\  \n  \t  反斜杠将转义特殊字符;  同时单引号不能解析变量;

"  "      双引号时 \" \\ 将被转义,但\n  \t不能被转义;  同时双引号能解析变量;

单引号速度比双引号快

③字符串常用函数

      长度、位置、替换、截取、拆分、转义、反转

——长度函数

strlen();  返回整形;中文每字为3字节;

mb_strlen();  返回字数/utf-8  中文为一个字节,需扩展支持    mb_strlen('汉字','utf-8');

——查位置

strop($a,$b);  查询$b在$a中的位置,如果结果为0时将返回null,所以使用判断  if( storp($a,$b) !== false)

stripos($a,$b);  查询第一次出现的位置

strrpos($a,$b);  查询最后一次出现位置

——替换

str_replace($a,$b,$str);  把$str中的$a替换为$b

strr();  替换一批字符串,利用数组    ( $str , array( $a=>$b , $c=>$d )  )把$a替换为$b,$c替换为$d

——截取

substr($str,a,len);  把字符串$str从a开始截取长度len

——拆分字符串

number_format();  以千分位分割数字;必须是纯数字;

chunk_split(str,int,'end');  把字符串str以每int个分割开,并且用 'end' 分隔符  返回字符串string

explode('end',str);  把字符串根据 ''end'' 字符分割  返回数组

str_split(str,int);  把字符串str以每int个分割  返回数组

implode('end',array);  把array以'end'字符粘合  返回字符串

——转义

addslashes(str);  对字符串中的 ' \ 进行转义,在此类符号前面添加一个反斜杠 \

stripslashes(str);  去除字符串中的反斜杠,如果有两个\\挨着,去除第一个;

get_magic_quotes_gpc();  返回magic_quotes_gpc是否开启,开启时如果包含post、get、cookie等增加 \ 转义,确保不会产生特殊字符引起的污染

            ( !get_magic_quotes_gpc() )?addslashes($str):$str  判断没开启转义,开启不进行转义

             注: php5.4版本以上 始终返回false,该方法移除了,所以不要依赖此设置;

htmlspecialchars();  把字符串转成html实体;例如<>转成&lt; 与&gt;

htmlspecialchars_decode();  把&lt:转成<   

htmlentities()   把字符串中所有可转换字符转为html实体

html_entity_decode();  htmlentities()的反函数;

——反转

strrev();  反转字符串

④字符串比较

strtmp($str1,$str2);  返回整形,0为相等,负数为1比2少,正数为1比2多

⑤转换

strtolower();  字符串转小写;

strtoupper();  字符串转大写;

ucfirst();    字符串第一个转大写;

ucwords();  将每个单词首字母大写;

⑥移除

ltrim($str,st);  从字符串$str中删除开头的st

六、数组

    数组的每个值都有键key与值value属性

    索引数组,key是数字;

    关联数组,key是字符串;

①声明方式  

array( key1=>value1 , key2=>value2 );

  多维数组:

  array( key1=>value1 , key2=>array( key1=>value1 , key2=>value2 ) , key3=>value3 );  

注:如果键key重复,则后边覆盖前面的

②操作数组单元

$arr[]=' '      在数组后面增加1个单元;

$arr[ i ]   取出键key为i的值;

$arr[ i ][ j ]  取出多维数组的值

unset( $arr[ i ] ); 删除键key为i的值;

array_unshift();  从数组开始插入值,并使key向后排;

③遍历数组

——索引数组取值

  for( $i=0;$i<count($array); $i++ ){}

——关联数组取值

  foreach( $array  as  $key=> $value ){}  as一个时只取值

④游标操作

current()  当前游标指向的数组

next()    把游标向后移动一位

end()  把游标移动到最后一位

resset()  复位

prev()  游标向前移动

⑤数组常用函数

count()  计算数组中的单元数目

aray_key_exists( key,array ) 检查给定的键是否存在于数组

in_array()  检查数组中是否存在某个值

array_change_key_case( array,case )  返回字符串键名全为大写或全为小写的字符串case有两个值:case_upper , case_lower   .

                  注:如果返回的键名重复,后面的会覆盖前面的,如,keY和KEY;

array_count_valus();  统计所有值出现的次数,并以被统计数组的值作为键名返回一个数组

array_fil( a,num,value );   用value对数组填充num个项目,填充的起始序列为a

array_filter( array,callback );  用回调函数过滤数组的单元,例如通过函数对array只取偶数

array_push( array,value);  想数组末尾添加一个或多个值(入栈)

array_pop( array );  弹出单元,从末尾开始,并使数组长度减一(出栈)  使用此函数会重置(reset())array指针

array_unshift();  向数组头部添加单元,并重新排序key

array_column( array,column,index  );  从多维数组中返回指定数组的一列;  从多维数组中找到column列,并以index为键名返回数组

array_unique( array );  返回数组中去重后的新数组,值重复时只返回第一个键及其值

sort( array,flags );  对数组进行排序,flags排序类标记:SORT_NUMBER作为数字比较/SORT_STRING字符串/SORT_FLAG_CASE不区分大小写

usort( array,callback );   使用用户自定义的函数对数组进行排序

asort();  对数组排序并保持索引关系

ksort();  对数组按键名排序

natsort();  用“自然排序”算法对数组排序,(数字排序按首位数)

natcasesort();  用“自然排序”算法对数组进行不区分大小写字母的排序     

array_merge();  合并一个或多个数组

array_merge_recursive();  递归地合并一个或多个数组

array_diff( arr1,arr2 );  返回数组中不一样值得集合

array_intersect( arr1,arr2 );  返回数组中一样值得集合

array_intersect( arr1,arr2 );   带索引检查计算数组的交集

array_flip();  把数组中的键和值进行交换

arrat_reverse( array,true );  对数组的单元进行相反排序,key为数字时不保留原有key,非数字时保留,设置true时保留数字key

array_sum();  计算数组中所有值的和;返回int或float

shuffle();  洗牌,随机打乱数组的单元排序,调用该方法时数组内部排序就被打乱,

range( low,high,step );  建立一个包含指定范围单元的数组,范围为以low开始,以high结束,以step为进步,step设置为2就每次跳两个

array_rand( array,int );  从数组中随机取出一个或多个单元

 八、全局变量与常量

①全局变量

$_GET  表单GET方式发送的值;地址栏上获得的值

$_POST  表单POST方式发送的值

$_REQUEST  默认下包括了GET、POST、COOKIE的值

$_SESSION  存储用户'会话'的信息变量,把信息存储到会话之前必须先启动会话 session_start(); 函数必须位于<html>标签之前

        为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。

$_COOKIE  用于取回 cookie 的值。setcookie() 函数必须位于 <html> 标签之前。

        cookie是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。

$_FILES  用户上传文件信息、数组

$_GLOBALS  对全局变量的花名册,通过该变量任意访问全局变量

$_ENV  服务器操作系统的环境变量

$_SERVER  获取网站域名,当前访问的脚本,来访者ip等

②常量

意义:声明常量后不能被修改

define( name,value );

  命名规则与变量一样,但习惯上全大写以区别变量;

  常量名前不加$符号,不能销毁,不能修改,全局有效

defined()  检测常量是否存在

constant();  返回常量的值

③动态常量名

意义,用变量的值做常量的名;

1 define('PI',3.14159);
2 $pai='PI';
3 $a=constant('PI');
4 $b=constant($pai);
5 echo $a;
6 echo $b;
7 //输出$a和$b的值都为3.14159;

 九、文件管理案例

①文件包含

include( 'url' );  包含并运行指定文件 

include_once();  只引入一次,如果引入过不再引入

require();  如果引入不存在,防止执行,将导致脚本中止

require_once(); 与include_once()等同功能

②进制与位运算

10进制  echo  123;  正常数字

8进制  echo  0123;  在数字前面加个0; 数字0;

16进制  echo  0x123;  在数字前面加0x;数字0和字母x;

2进制  PHP目前不支持表示二进制

位运算  &且    |或    对每个位上的逻辑运算

位运算先把数字转成二进制,然后对每位数比较返回数字,例如

1 //  5      0000 0101
2 //  12     0000 1100
3 //  &      0000 0100  转成10进制是4
4 //  |      0000 1101  转成10进制是13
5 echo 5&12,5|12;
6 //结果为4和13;转成二进制,然后比较每一位数返回值,然后转成10进制;

 ③PHP错误报告设置

PHP脚本错误等级  如:致命错误、NOTICE、WARNING、N等;

error_reporting(0);  不报告所有错误;

error_reporting( E_ALL ^ E_NOTICE )  报告所有但除了NOTICE级错误

④浮点数不精确

  因为一些小数再转成2进制要无限循环,损失精度;

⑤逻辑运算的短路特性

&&  并且  如果遇到第一个为假的条件,之后的不再运算

||     或者  只要遇到一个为真的条件,就继续执行后面的

应用实例:

1 //if(!defined('PI')){
2 //        define('PI',3.14159);
3 //}
4 //echo constant('PI');
5 //利用短路特性将上面代码简写为下面代码
6 defined('PI')||define('PI',3.1415);
7 echo constant('PI');

 ⑥文件管理

opendir( 'URL' )  打开一个URL的目录dir

closedir( 'dir' )  关闭指定的dir目录

rewinddir( 'dir' )   倒回目录句柄,将dir指定的目录流重置到目录的开头。

readdir( dir )    返回打开的dir目录中下一个文件的文件名。文件名以在文件系统中的排序返回。可以使用while循环出,如下代码

 1 $words = opendir('./');
 2 if ($words===false){
 3         exit('没有该文档');//输出一个消息并退出脚本
 4 }
 5 $arr= array();
 6 while( ($i=readdir($words)) !== false){
 7     $arr[]=$i;
 8 }
 9 var_dump($arr);
10 closedir($words);

输出:

   

posted @ 2018-03-24 17:20  刘半封  Views(190)  Comments(0Edit  收藏  举报