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 分支语句
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实体;例如<>转成< 与>
htmlspecialchars_decode(); 把<:转成<
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入门——基本巩固的更多相关文章
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- Oracle分析函数入门
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- Angular2入门系列教程4-服务
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
- wepack+sass+vue 入门教程(二)
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
- wepack+sass+vue 入门教程(一)
一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
随机推荐
- utils工具类
使用工具类的方法 目录结构 o代表项目层 util.js 用promise避免异步获取不到数据的问题 注意module.exports var APIURL = ''; function getApi ...
- 利用python破解sqlserver账号密码
一.编写密码测试函数 在用python连接mssql数据库的时候,通常会使用pymssql模板中的connect函数,格式如下: connect(server,user,password,databa ...
- 单线拨号上网时RouterOS内网端口映射的配置
很多时候routeros 是通过单线拨号上网,假设PPP接口名为pppoe-out1 若需要添加内网ip=18.16.1.92主机的3389端口映射 ,可以在命令行键入: ip firewall na ...
- Scrapy 原理
Scrapy 原理 一.原理 scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘,信息处理或存储历史数据等一系列程序中. 二.工作流程 Scrapy Engi ...
- JavaScript中的ononline事件和onoffline事件
关于这个时间的描述到处都有,但基本上都是说离线在线什么的我一下子还没反应过来.后再在这里看到了一句话:"断开网络再联网试试,就可以看到连线的提示."这才反应过来,原来指的是网络状态 ...
- Java扩展方法之SPI
API:API(Application Programming Interface)表示应用程序编程接口 SPI:SPI(Service Provider Interface)表示服务提供商接口 A ...
- Java创建对象的4种方式
Java创建对象的方式共有四种: 使用new语句实例化一个对象: 通过反射机制创建对象: 通过clone()方法创建一个对象: 通过反序列化的方式创建对象. 一.使用new语句实例化一个对象 new语 ...
- rust 如何搜索,如何debug (解决)
requirement c程序可以用手动查看.h文件获得定义,或者用dumpbin分析lib或者dll获得二进制信息. 但是rust如何得到库的定义呢? rust如何查看函数定义? rust如何deb ...
- 网站设置http到https
首先ssl证书配置好,以保证可以正常访问https,若不会请看上一个文章 然后就是http模式访问怎么自动到https呢,很简单 首先在ssl网站根目录创建文件.htaccess,很多用文本文档那样创 ...
- Winform 窗体实现圆角展示
触发窗体的Resize事件,如下所示: #region 界面实现圆角 private void LoginForm_Resize(object sender, EventArgs e) { if (t ...