小星星的php
2021-05-20 16:30
标签:释放 use 索引 无法 加载 bsp break 开源 网页 ① 这个最好哦 ② ③ ?> ④ ①:php中的变量必须使用$开头!! eg:$a=$b=$c=10; 1 Boolean:true为真false为假; ① ‘‘; s;(定界符结束) ④三种声明方式的区别: eg:"haha{$num}haha" "haha${num}haha" 两种写法均可 2 强制类型转换:根据我们的需要,强制将变量转化为其它类型。 ②:使用settype()进行强转; is_bool():判断是否是布尔型 +:只有加减运算的功能,在进行加减运算时,如果两边有非数值类型,则会自动将非数值类型转为数值类型 3 比较运算符 5 位运算符 1continue:跳出本次循环继续进行下一次 函数的声明与使用: 1、标识符:程序中各变量名、属性名、方法名、函数名、类名统称为标识符 函数名的要求: 1 局部变量:声明在函数内部的变量,称为局部变量,只能在函数内部使用,如果要在外部使用,使用return关键字将函数返回 6 php中子函数也无法使用父函数中变量。 在php中如果有参数的传递,实参只能比形参多,不能比形参少!! 4可变参数传递,由于php中实参可以比形参多,那么,传递进函数的参数可以通过php的内置函数取到相关数据 例如: 1 将一个函数名,作为一个字符串,赋值给一个变量,这个变量,就是我们所说的变量函数,可以直接使用()调用变量函数。 由于变量函数,存在两种调用方式,例如func() $func() 我们来做一个练习题吧!求取10以内的数阶乘: 使用static关键字声明的变量,称为静态变量,static $a=0; 按照下标的不同,php中的数组分为关联数组和索引数组 关于关联数组跟索引数组 写法: //索引数组 print_r($arr1); 让我们用几个栗子来验证以上学法是否正确:
$arr4 //如果关联项的key是十进制的整形,则会将此数字转为索引下标,
$arr5 //如果手动指定索引下标,则后续索引的增长,将从指定的最大下标开始 如果手动指定索引项的下标,或关联项的key与前面的已有下标混合或者key重复,则后指定的会覆盖前面指定的 使用Array()声明:但是没有new关键字 使用字面量[]声明,这种声明从php5.4开始支持 直接赋值声明:php中数组,可以直接使用$arr[]=n;在数组中最后追加一个值,类似push方法。 $arr[]=1; var_dump($arr[0]); 2 多维数组,并不要求每个项都是数组,嵌套一般不超过3层
[使用for循环便利数组] 2 foreach便利数组 list():用于将数组中的每一个值赋给list函数的每一个参数。(list函数的参数个数,不能大于数组中元素的个数) each():函数的作用 使用while循环,配合each进行便利 小星星的php 标签:释放 use 索引 无法 加载 bsp break 开源 网页 原文地址:http://www.cnblogs.com/scd903686521/p/7705294.html大家好,我是小星星,最近新学的php,我迫不及待要跟大家分享了!!come on!一起来看小星星的世界
先为大家介绍php基础
首先我们来看看什么叫php:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
php支持的动态网站语言:
java----jsp
PHP-----php
asp---——asp
php中常见的服务器:
Apache:Apache公司旗下的服务器,用于解释php语言,端口号80
Tomcat:Apache公司旗下的另一款服务器,用于解释jsp文件,端口号8080
http协议的默认端口号是80,所以使用Apache服务器无需输入端口,可以直接
使用本地的 IP:127.0.0.1或者localhost
常见的数据库:
Mysql Oracle Access SQLServer..
Mysql是一款开源免费的数据库软件,数据库存储量上要低于Oracle,但是执行效率上要高于Oracle
PHP系统通常配合Mysql使用,但是php也支持链接几乎所有的主流浏览器
B/S和C/S:
1.B/S结构:浏览器/服务器结构,用户只需要通过浏览器即可访问的网站,绝大部分功能集中在后台服务器。
2.C/S结构:客户端服务器结构,用户需要安装软件客户端才可以使用的程序,客户端部分可以分担一定的操作功能
php的语言标记:一共四种哦
php中的变量:
②:php是一种弱类型语言,变量无需声明,直接给变量赋值即可,并且可以再后续赋值过程中,随时修改变量的数据类型
③:php中可以使用连等声明多个变量,而且一定不能用,分割。PHP中的真假换算(很重要哦):
2。 Integer类型,0为假,非0为真
3. 浮点型 0.0为假,非0.0为真
4.字符串类型 "" "0"为假,其余全为真
5 。Array类型,空数组为假,非空为真
6 Object类型:全为真;(只有PHP4版本中,空对象为假)
7 NULL类型 全为假。
8 Resource类型:全为真。php中的字符串:
② "";
③
//定界结束符必须顶格写, 而且一行中不能有任何其他内容,包括空格;
//定界标识符可以是任何字母,只要保证开始符和结束符一致即可;
a:‘‘中不能解析变量,而双引号可以解析变量。
注意:双引号中,如果解析变量,需要将变量与后面内容隔开,或者用{}包裹。
b: ‘‘中不能使用转义符(除了\\和\‘之外)双引号中可以使用所有转移符;
c ‘‘中可以有双引号,双引号中可有单引号,但是不能包裹同类型引号
d 定界符所有功能,与双引号相同.(但是,定界符中还可以有双引号)php中的数据类型转换:
1 自动类型转换,表示运算的时候,Boolean null String等类型会自动转为Integer或Float类型
Null-->0 false-->0 true-->1
String转第一个非数值字符前面的数 "123a"-->123 "a123"-->0
②:使用()声明新类型强转
$新变量=(新类型)$原变量; $str=(String)1
//新类型的名称可以使用全拼。也可以使用缩写 Integer/Int Boolean/bool 是一个意思
(Integer)(int)---整形* (float)(double)(real)--浮点型
(String)--字符串* (Boolean)(bool)--布尔型
(Array)---数组
(object)--对象
bool settype(minxed var,String NewType);
第一个参数是任何类型的变量,第二个参数是字符串类型的新数据类型
返回值是Boolean类型,表示转换是否成功!
③:两种强转的区别;
第一种 是将转换之后的结果赋值给新变量;
第二种 是直接修改掉原变量的数据类型
php中判断函数数据类型的常用函数:
is_int()、is_integer()和is_long():判断是否为整型。
is_float()、is_double()和is_real():判断是否为浮点型
is_string():判断是否为字符串
is_array():判断是否为数组
is_object():判断是否为对象
is_resource():判断是否为资源类型
is_null():判断是否为null
is_scalar():判断是否为标量
is_numeric():判断是否是任何类型的数字和数字字符串
is_callable():判断是否是有效的函数名 php中的运算符:
1 算术运算符
+ - * / ++ --
$a=22/"2.2a";
2 赋值运算符 = += -= *= /= %= .=(连接字符串)
> = (不等于) !==
==:不要求数据类型相等,只要求转换之后的结果相同;
===:要求值和数据类型必须都相等;
4逻辑运算符:
&& and || or !
&&和||:进行运算的时候会发生短路,当左侧能够判断出结果时,将直接返回结果,而不运行右侧(&& 左假即假 ||左真即真)
xor:逻辑异或 两边只有一个true,结果为TRUE,两天同为true或者同为false,结果为false
将10进制的数,转为二进制,进行按位运算,运算完以后在转回10进制
&:按位与, 两个都为1 结果为1
|:按位或, 有一个1 结果为1
^:按位异或, 两个不相同时, 结果为1
(一个数异或自身,结果为0,一个数异或0,结果为其自身)
num
>>:右移,转为2进制后,右移几位,左边空余位补0
num>>n 相当于num/2^n(小数取整)
6 其他运算符
?:三元运算符. ?前面为true,则执行:前面的,否则执行:后面的
``:可以直接用系统命令执行中的相关指令并执行,但是,由于不同平台的的指令不一致,
以及安全性问题,这个符号我们并不支持使用,eg: ‘ipconfig‘
@:错误信息的控制符,可以屏蔽掉网页中出现的一些小错误信息,,但是,并不提倡使用
echo @$f //未定义 会产生Notice级别的提示,可以使用@屏蔽
php流程控制语句:
2 break 跳出本层循环,继续执行循环后面的的语句,
php中,continue和break后面可以接数字表示跳过几层循环或者switch,
3 return 结束当前函数,并返回值,如果没有函数包裹,return也能终止当前脚本,但是一般不使用return终止脚本
4 exit()die():结束当前脚本,并且打印一句话
exit("再见");基础就这么多,下面来介绍函数
①:标识符的命名要求
只要是标识符,命名只能有字母数字下划线组成,开头不能是数字
②:标识符的命名规范:
类名:要符合“大驼峰法则”。每个单词的首字母全部大写!PersonName
其他标识符,符合“小驼峰法则”,首字母小写,之后每个单词的首字母大写 myNameIsJredu
或者“匈牙利命名法”所有字母小写,单词之间用下划线分割。my_name_is_jredu
①:函数名也是标识符之一,符合标识符的要求与规范
②:函数名不区分大小写
③:函数名与已有函数名重复,不能与系统内置函数名重复
④:bool function_exists(String funName);用于检测函数名是否存在php中变量的作用域:
2声明在函数外面的变量称为全局变量
3 注意:php中,全剧范围不能访问局部变量,局部范围也不能访问全部变量
如果要在函数中使用全局变量,则需要使用global关键字将全局变量引入
函数中如果需要有变量与全局变量重名,global语句之上,使用局部变量,global语句之下,使用全局变量
4 GLOBALS[] 全剧数组
$GLOBALS[]数组是php中的全局数组,可以直接给数组添加键和值,无论在函数内外声明,均可以在任何地方使用;
eg:$GLOBALS[‘name‘]="jianghao";
//无论哪里声明,在任何地方均可使用$GLOBALS[‘name‘]
5 函数中需要使用局部变量使用全局变量,还有一种方式,叫做【函数传参】,可以将全局变量通过函数的参数传入,但是传进来的参数是函数的形参,也就是
函数内部的局部变量,这个变量与全局变量实际上是2个变量,内部改变,全部变量不会变;
如果需要在函数内部改变全局变量,可以将形参声明为取址形式
function func($a1,&$a2){} //函数内修改a1,全局的a1不会改变,函数内修改a2,函数的a2也会改变
注意:如果函数的形参为取址形式,则调用时必须传入变量,而不能是字面量,例如上面的函数调用, func($a1,$a2);√ func($a1,2)×
因为字面量,不能内存中的变量,无法取地址。
如果子函数要使用父函数的变量,可以将子函数作为变量函数使用, 同时配合use关键字将父函数的变量传入子函数;
function func(){
$a=10;
$func=func() use($a){
echo $a;
}
}
use关键字只能配合变量函数使用,可以将子函数作为函数的表达式使用,同时匹配合use关键字将父函数的变量传入子函数函数中参数的传递:
①:常规参数传递: function func($a){} func(123);
2 引用参数传递 : function func(&$a){} func($b) ;
①:通过&传递进来的是实参的地址,所以函数内部改变形参,外部的实参也会改变
②:如果形参为引用参数,那么实参必须是变量,而不能是字面量,因为字面量没有地址!!(func10); ×
3 默认参数传递: function func($a,$b=10){} func(12);
//$b可以不传,默认为10;
注意:如果参数中有默认参数,拥有非默认参数,则需要将所有的非默认参数放在后面,所有的默认参数放在后面
func_get_args();返回数组的格式,去到所有的实参列表
func_num_args();返回实参列表总个数,count(func_get_args());
func_get_arg(0);传入index,取到第几个参数 func_get_args()[0]function func3($a,$b=10){
$arr=func_get_args();
var_dump(func_get_args());
var_dump(func_num_args());
var_dump(func_get_args(0));
var_dump(count($arr));
}
func3();
变量函数:
function func(){}
$a="func";//$a就是变量函数
$a();function func4(){
}
$func4=func;
$func4();
var_dump($func4);
自定义回调函数:我们用前面的知识来做一个大题
function filter($start,$end,$func){
for($i=$start;$i){
if($func($i)){
echo "{$i}
";
//传参,for循环
}
}
}
// filter(1,100);
filter(1,100,function($a){
if($a%5==0 && $a%3!=0){
return true;
}else{
return false;
}
});
function func2($a,$b){
}
func2(1,2,3,4);
function func(){
$a=0;
static $a=0;
echo $a;
$a++;
}
func();
func();
func();
func();
func();
func();
匿名函数:
无法保证调用方法的统一,所以,变量函数通常使用匿名函数的方式进行
$func1=function(){};
!!!注意使用匿名函数表达式,最后的分号一定不能省略!
匿名函数。本身也是变量,用var_dump检测,是Object类型;$func1=function(){};
var_dump($func1);
看看打印后返回什么:function func($num){
static $jie=1;
//static叫做静态变量
静态变量的特点:
①:静态变量在函数第一次加载时进行声明;
②:静态变量在函数调用完成后,不会被释放,静态变量在整个脚本执行完成后;释放变量
③:同一个函数多次调用,共享同一个静态变量
if($num>0){
$jie *= $num;
$num--;
func($num);
}
return $jie;
}
var_dump(func(10)); php中的数组
php中数组的分类:
索引数组,下标为整数类型,从0开始,依次增长;
关联数组,下标为字符串类型,每个下标的字符串与数组中的值一一对应(类似对象中的键值对) 两个数组有什么区别呢!小编总结以下五条:
①:同一个数组中,可以同时存在关联项和索引项
array(1,2"name"=>zhangsan)
②:如果数组中同时存在关联项跟索引项,则索引下标会去掉关联项后,默认增长(关联项不占索引位)
array(1,2,"name"=>zhangsan,3,4);//1,2,3,4的下标依次为0,1,2,3
arr=[];//字面量方式声明数组从php.4开始支持
③:如果关联项的key是十进制的整形,则会将此数字转为索引下标,
("10.0","08"等格式,不会转为索引下标仍然为关联数组)
$arr4=array(1,2,"name"=>"zhangsan","5"=>3,"07"=>4);//1,2,3,的下标依次为0,1,5
4依然为关联项,key为"07"
④:如果手动指定索引下标,则后续索引的增长,将从指定的最大下标开始
array(1,2,"name"=>"zhangsan","5"=>3,4);//4的下标为6
⑤:如果手动指定索引项的下标,或关联项的key与前面的已有下标混合或者key重复,则后指定的会覆盖前面指定的
array(1,"name"=>"zhangsan","0"=>3,"name"=>4);
//数组最终第0项为3,name=>4
$arr=[];
$arr1=array(1,2,3,4,5,6);
var_dump($arr1);
//关联数组,用=>表示键值对的关联$arr2=array("name"=>"zhangsan","age"=>14,"sex"=>"男");
var_dump($arr2);
echo $arr2["name"];
$arr3=array(1,2,"name"=>"zhangsan",3,4);
var_dump($arr3);
//如果数组中同时存在关联项跟索引项,则索引下标会去掉关联项后,默认增长!!符合上述第二条
("10.0","08"等格式,不会转为索引下标仍然为关联数组)
所以:$arr4=array(1,2,"name"=>"zhangsan","5"=>3,"07"=>4);//1,2,3,的下标依次为0,1,5
array(1,2,"name"=>"zhangsan","5"=>3,4);//4的下标为6
$arr6=array(1,"name"=>"zhangsan","0"=>3,"name"=>4);
var_dump($arr6);
array(1,"name"=>"zhangsan","0"=>3,"name"=>4);
//数组最终第0项为3,name=>4 数组声明的方式:
$arr=array(1,2,3);
$arr=[1,2,3];
追加的值的下标,与前面的要求一样,按照下标最大值进行递增$arr[]=1;
$arr[]=2;
$arr[8]=3;
$arr[]=4;
$arr[4]=5;
$arr[]=6;
var_dump($arr);
//数组下标的读取,php中数组下标的读取,支持使用[]和()
var_dump($arr[0]);
var_dump($arr[8]);
$arr[]=2;
$arr[8]=3;
$arr[]=4;
$arr[4]=5;
$arr[]=6;
var_dump($arr);
//数组下标的读取,php中数组下标的读取,支持使用[]和()
var_dump($arr[8]);
【多维数组】
如果一个数组中的值,依然为数组,那个这个数组就是多维数组
$class=[
"name"=>"h51705",
"count"=>"28",
"grounp1"=>array("zhangsan","lisi","wangermazi"),
"grounp2"=>array("zhangsan","lisi","wangermazi"),
"grounp3"=>array("zhangsan","lisi","wangermazi"),
"grounp4"=>array("zhangsan","lisi","wangermazi"),
"grounp5"=>array("zhangsan","lisi","wangermazi")
];
var_dump($class);
便利数组:
count($arr);函数用于统计数组中的元素个数
for:循环只能用于便利索引数组,如果包含关联数组,则count()会统计两种数组的总个数,到时for循环时会出现“数组下标越界”的错误$arr=[1,2,3,4,5,"name"=>"张三"];
for($i=0;$i
";
}
foreach可以便利任何类型的数组!!$arr1=[1,2,3,4,5,"name"=>"张三"];
foreach($arr1 as $item){
echo "{$item}
";
}
$arr1=[1,2,3,4,5,"name"=>"张三"];
foreach($arr1 as $key=>$value){
echo "{$key}=>{$value}
";
}
使用list()/each()/while()便利数组
eg: list($a,$b,$c)=$arr;
--->$a=1; $b=2; $c=3;
注意:①:list()在解析数组的时候只能解析索引数组;
②:list()可以通过索引参数选择性的解决数组的值;
list($a,$b,,$c)=[1,2,3,4];==>$c=4$arr=[1,2,3,4];
list($a,$b,$c,$d)=$arr;
echo $a."
";
echo $b."
";
echo $c."
";
echo $d."
";
each():用于返回数组当前的指针所在的位的键值对,并将指针后移一位;
"返回值":如果指针有下一位,则返回一个数组,数组包含一对关联项
("key"--键 "value"--值)和一个索引项(0--键 1--值)
如果指针没有下一位,返回false$arr1=["name"=>"zhangsan",2,3,4];
// each ($arr1);
var_dump(each($arr1));
var_dump(each($arr1));
var_dump(each($arr1));
while($a=each($arr1)){
echo "{$a[0]}==>{$a[1]}
";
echo "{$a[‘key‘]}==>{$a[‘value‘]}
";
}
reset($arr1);//将数组指针恢复到最初位置
while(list($key,$value)=each($arr1)){
echo "{$key}==>{$value}
";
}
reset($arr1);
var_dump($arr1);