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

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

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

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

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

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

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

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

一、变量

①类型

整形、浮点型、字符串、布尔型、数组、对象、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  分支语句

     switch (表达式){
case 值1:
执行:
break;
case 值2:
执行:
break;
default:
没有匹配项执行:
}

③while 循环

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

④for循环

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

   for(a;b;d){
   c;
  }

⑤break与continue

break  破坏循环、破坏执行;

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

四、函数

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

①函数定义 格式

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

命名不区分大小写

②函数执行与返回流程

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

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

  注:return只能返回一个值;

③函数参数传递方式

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

 ④作用域

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

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

⑤动态调用函数

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

     function abc(){
echo "hello";
}
$a = 'abc';
$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';  定义一段字符串

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

 $a=<<<EOF
<html>
</html>
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();  返回常量的值

③动态常量名

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

 define('PI',3.14159);
$pai='PI';
$a=constant('PI');
$b=constant($pai);
echo $a;
echo $b;
//输出$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目前不支持表示二进制

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

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

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

 ③PHP错误报告设置

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

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

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

④浮点数不精确

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

⑤逻辑运算的短路特性

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

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

应用实例:

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

 ⑥文件管理

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

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

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

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

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

输出:

  

PHP入门——基本巩固的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  3. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  4. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  5. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  6. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  7. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  8. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  9. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  10. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. utils工具类

    使用工具类的方法 目录结构 o代表项目层 util.js 用promise避免异步获取不到数据的问题 注意module.exports var APIURL = ''; function getApi ...

  2. 利用python破解sqlserver账号密码

    一.编写密码测试函数 在用python连接mssql数据库的时候,通常会使用pymssql模板中的connect函数,格式如下: connect(server,user,password,databa ...

  3. 单线拨号上网时RouterOS内网端口映射的配置

    很多时候routeros 是通过单线拨号上网,假设PPP接口名为pppoe-out1 若需要添加内网ip=18.16.1.92主机的3389端口映射 ,可以在命令行键入: ip firewall na ...

  4. Scrapy 原理

    Scrapy 原理 一.原理 scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘,信息处理或存储历史数据等一系列程序中. 二.工作流程 Scrapy Engi ...

  5. JavaScript中的ononline事件和onoffline事件

    关于这个时间的描述到处都有,但基本上都是说离线在线什么的我一下子还没反应过来.后再在这里看到了一句话:"断开网络再联网试试,就可以看到连线的提示."这才反应过来,原来指的是网络状态 ...

  6. Java扩展方法之SPI

    API:API(Application Programming Interface)表示应用程序编程接口 SPI:SPI(Service Provider Interface)表示服务提供商接口  A ...

  7. Java创建对象的4种方式

    Java创建对象的方式共有四种: 使用new语句实例化一个对象: 通过反射机制创建对象: 通过clone()方法创建一个对象: 通过反序列化的方式创建对象. 一.使用new语句实例化一个对象 new语 ...

  8. rust 如何搜索,如何debug (解决)

    requirement c程序可以用手动查看.h文件获得定义,或者用dumpbin分析lib或者dll获得二进制信息. 但是rust如何得到库的定义呢? rust如何查看函数定义? rust如何deb ...

  9. 网站设置http到https

    首先ssl证书配置好,以保证可以正常访问https,若不会请看上一个文章 然后就是http模式访问怎么自动到https呢,很简单 首先在ssl网站根目录创建文件.htaccess,很多用文本文档那样创 ...

  10. Winform 窗体实现圆角展示

    触发窗体的Resize事件,如下所示: #region 界面实现圆角 private void LoginForm_Resize(object sender, EventArgs e) { if (t ...