码迷,mamicode.com
首页 > Web开发 > 详细

小星星的php

时间:2017-10-21 19:12:37      阅读:400      评论:0      收藏:0      [点我收藏+]

标签:释放   use   索引   无法   加载   bsp   break   开源   网页   

大家好,我是小星星,最近新学的php,我迫不及待要跟大家分享了!!come on!一起来看小星星的世界

 

先为大家介绍php基础

 

首先我们来看看什么叫php:

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言语法吸收了C语言JavaPerl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了CJavaPerl以及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?> 这个最好哦

②<script language="php"></script>

③<? ?>

④<% %>

php中的变量:

①:php中的变量必须使用$开头!!
 ②:php是一种弱类型语言,变量无需声明,直接给变量赋值即可,并且可以再后续赋值过程中,随时修改变量的数据类型
③:php中可以使用连等声明多个变量,而且一定不能用,分割。

eg:$a=$b=$c=10;

 

PHP中的真假换算(很重要哦):

1 Boolean:true为真false为假;
 2。 Integer类型,0为假,非0为真
 3. 浮点型 0.0为假,非0.0为真
4.字符串类型 "" "0"为假,其余全为真
 5 。Array类型,空数组为假,非空为真
 6 Object类型:全为真;(只有PHP4版本中,空对象为假)
 7 NULL类型 全为假。
 8 Resource类型:全为真。

 

php中的字符串:

① ‘‘;
 ② "";
 ③<<<(定界符); $str=<<<s(定界符开始)
//定界结束符必须顶格写, 而且一行中不能有任何其他内容,包括空格;
 //定界标识符可以是任何字母,只要保证开始符和结束符一致即可;

 s;(定界符结束)

 ④三种声明方式的区别:
 a:‘‘中不能解析变量,而双引号可以解析变量。
 注意:双引号中,如果解析变量,需要将变量与后面内容隔开,或者用{}包裹。

eg:"haha{$num}haha" "haha${num}haha" 两种写法均可
 b: ‘‘中不能使用转义符(除了\\和\‘之外)双引号中可以使用所有转移符;
 c ‘‘中可以有双引号,双引号中可有单引号,但是不能包裹同类型引号
 d 定界符所有功能,与双引号相同.(但是,定界符中还可以有双引号)

 

php中的数据类型转换:

1 自动类型转换,表示运算的时候,Boolean null String等类型会自动转为Integer或Float类型
 Null-->0 false-->0 true-->1
 String转第一个非数值字符前面的数 "123a"-->123 "a123"-->0

 2 强制类型转换:根据我们的需要,强制将变量转化为其它类型。
②:使用()声明新类型强转
 $新变量=(新类型)$原变量; $str=(String)1
 //新类型的名称可以使用全拼。也可以使用缩写 Integer/Int Boolean/bool 是一个意思
 (Integer)(int)---整形* (float)(double)(real)--浮点型

 (String)--字符串* (Boolean)(bool)--布尔型
 (Array)---数组
 (object)--对象

 ②:使用settype()进行强转;
 bool settype(minxed var,String NewType);
 第一个参数是任何类型的变量,第二个参数是字符串类型的新数据类型
 返回值是Boolean类型,表示转换是否成功!
 ③:两种强转的区别;
 第一种 是将转换之后的结果赋值给新变量;
 第二种 是直接修改掉原变量的数据类型

 

 php中判断函数数据类型的常用函数:

is_bool():判断是否是布尔型
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 赋值运算符 = += -= *= /= %= .=(连接字符串)

 3 比较运算符
 > < >= <= == === != <>(不等于) !==
 ==:不要求数据类型相等,只要求转换之后的结果相同;
 ===:要求值和数据类型必须都相等;
 4逻辑运算符:
 && and || or !
 &&和||:进行运算的时候会发生短路,当左侧能够判断出结果时,将直接返回结果,而不运行右侧(&& 左假即假 ||左真即真)
 xor:逻辑异或 两边只有一个true,结果为TRUE,两天同为true或者同为false,结果为false

5 位运算符
 将10进制的数,转为二进制,进行按位运算,运算完以后在转回10进制
 &:按位与, 两个都为1 结果为1
 |:按位或, 有一个1 结果为1
 ^:按位异或, 两个不相同时, 结果为1
 (一个数异或自身,结果为0,一个数异或0,结果为其自身)
 <<:左移 转为2进制后,左移几位,右边空余位补0
 num<<n 相当于num *2^n
 >>:右移,转为2进制后,右移几位,左边空余位补0
 num>>n 相当于num/2^n(小数取整)
 6 其他运算符
 ?:三元运算符. ?前面为true,则执行:前面的,否则执行:后面的
 ``:可以直接用系统命令执行中的相关指令并执行,但是,由于不同平台的的指令不一致,
 以及安全性问题,这个符号我们并不支持使用,eg: ‘ipconfig‘
 @:错误信息的控制符,可以屏蔽掉网页中出现的一些小错误信息,,但是,并不提倡使用
 echo @$f //未定义 会产生Notice级别的提示,可以使用@屏蔽

 php流程控制语句:

 

1continue:跳出本次循环继续进行下一次
2 break 跳出本层循环,继续执行循环后面的的语句,
 php中,continue和break后面可以接数字表示跳过几层循环或者switch,
 3 return 结束当前函数,并返回值,如果没有函数包裹,return也能终止当前脚本,但是一般不使用return终止脚本
 4 exit()die():结束当前脚本,并且打印一句话
 exit("再见");

 

基础就这么多,下面来介绍函数

函数的声明与使用:

1、标识符:程序中各变量名、属性名、方法名、函数名、类名统称为标识符
 ①:标识符的命名要求
 只要是标识符,命名只能有字母数字下划线组成,开头不能是数字
 ②:标识符的命名规范:
 类名:要符合“大驼峰法则”。每个单词的首字母全部大写!PersonName
 其他标识符,符合“小驼峰法则”,首字母小写,之后每个单词的首字母大写 myNameIsJredu
 或者“匈牙利命名法”所有字母小写,单词之间用下划线分割。my_name_is_jredu

函数名的要求:
 ①:函数名也是标识符之一,符合标识符的要求与规范
 ②:函数名不区分大小写
 ③:函数名与已有函数名重复,不能与系统内置函数名重复
 ④:bool function_exists(String funName);用于检测函数名是否存在

 

php中变量的作用域:

1 局部变量:声明在函数内部的变量,称为局部变量,只能在函数内部使用,如果要在外部使用,使用return关键字将函数返回
 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)×
 因为字面量,不能内存中的变量,无法取地址。

 6 php中子函数也无法使用父函数中变量。
 如果子函数要使用父函数的变量,可以将子函数作为变量函数使用, 同时配合use关键字将父函数的变量传入子函数;
 function func(){
 $a=10;
 $func=func() use($a){
 echo $a;
 }
 }
 use关键字只能配合变量函数使用,可以将子函数作为函数的表达式使用,同时匹配合use关键字将父函数的变量传入子函数

函数中参数的传递:

在php中如果有参数的传递,实参只能比形参多,不能比形参少!!
 ①:常规参数传递: function func($a){} func(123);
 2 引用参数传递 : function func(&$a){} func($b) ;
①:通过&传递进来的是实参的地址,所以函数内部改变形参,外部的实参也会改变
 ②:如果形参为引用参数,那么实参必须是变量,而不能是字面量,因为字面量没有地址!!(func10); ×
 3 默认参数传递: function func($a,$b=10){} func(12);
 //$b可以不传,默认为10;
 注意:如果参数中有默认参数,拥有非默认参数,则需要将所有的非默认参数放在后面,所有的默认参数放在后面

4可变参数传递,由于php中实参可以比形参多,那么,传递进函数的参数可以通过php的内置函数取到相关数据
 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();
技术分享

 

 

 

 变量函数:

1 将一个函数名,作为一个字符串,赋值给一个变量,这个变量,就是我们所说的变量函数,可以直接使用()调用变量函数。
function func(){}
 $a="func";//$a就是变量函数
 $a();

function func4(){
       
   }
   $func4=func;
   $func4();
      var_dump($func4);
技术分享
 

 

 自定义回调函数:我们用前面的知识来做一个大题

 

function filter($start,$end,$func){
       for($i=$start;$i<=$end;$i++){
           if($func($i)){
               echo "{$i}<br>";
//传参,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();


技术分享

 

 

 

 

 匿名函数:

由于变量函数,存在两种调用方式,例如func() $func()
 无法保证调用方法的统一,所以,变量函数通常使用匿名函数的方式进行
 $func1=function(){};
 !!!注意使用匿名函数表达式,最后的分号一定不能省略!
 匿名函数。本身也是变量,用var_dump检测,是Object类型;

$func1=function(){};
    var_dump($func1);
看看打印后返回什么:技术分享

 

 

 

我们来做一个练习题吧!求取10以内的数阶乘:

 

function func($num){
      static $jie=1;
//static叫做静态变量

 使用static关键字声明的变量,称为静态变量,static $a=0;
  静态变量的特点:
 ①:静态变量在函数第一次加载时进行声明;
 ②:静态变量在函数调用完成后,不会被释放,静态变量在整个脚本执行完成后;释放变量
 ③:同一个函数多次调用,共享同一个静态变量


if($num>0){ $jie *= $num; $num--; func($num); } return $jie; } var_dump(func(10));
技术分享

 


 

 

 php中的数组

 

 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);

print_r($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);
技术分享

 

//如果数组中同时存在关联项跟索引项,则索引下标会去掉关联项后,默认增长!!符合上述第二条

$arr4
=array(1,2,"name"=>"zhangsan","5"=>3,"07"=>4); var_dump($arr4);
技术分享

//如果关联项的key是十进制的整形,则会将此数字转为索引下标,
 ("10.0","08"等格式,不会转为索引下标仍然为关联数组)
所以:$arr4=array(1,2,"name"=>"zhangsan","5"=>3,"07"=>4);//1,2,3,的下标依次为0,1,5



$arr5
=array(1,2,"name"=>"zhangsan","5"=>3,4); var_dump($arr5);
技术分享

//如果手动指定索引下标,则后续索引的增长,将从指定的最大下标开始
 array(1,2,"name"=>"zhangsan","5"=>3,4);//4的下标为6


$arr6
=array(1,"name"=>"zhangsan","0"=>3,"name"=>4); var_dump($arr6);
技术分享

如果手动指定索引项的下标,或关联项的key与前面的已有下标混合或者key重复,则后指定的会覆盖前面指定的
 array(1,"name"=>"zhangsan","0"=>3,"name"=>4);
 //数组最终第0项为3,name=>4

 

 数组声明的方式:

使用Array()声明:但是没有new关键字
$arr=array(1,2,3);

 使用字面量[]声明,这种声明从php5.4开始支持
 $arr=[1,2,3];

 

直接赋值声明:php中数组,可以直接使用$arr[]=n;在数组中最后追加一个值,类似push方法。
 追加的值的下标,与前面的要求一样,按照下标最大值进行递增

 

$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[]=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]);


 技术分享


 

 

 

【多维数组】 

 

如果一个数组中的值,依然为数组,那个这个数组就是多维数组

 2 多维数组,并不要求每个项都是数组,嵌套一般不超过3层

 

$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);

技术分享

 


 

 便利数组:

[使用for循环便利数组]
 count($arr);函数用于统计数组中的元素个数
 for:循环只能用于便利索引数组,如果包含关联数组,则count()会统计两种数组的总个数,到时for循环时会出现“数组下标越界”的错误

 

$arr=[1,2,3,4,5,"name"=>"张三"];
 for($i=0;$i<count($arr);$i++){
     echo $arr[$i]."<br>";
 }

 

 

2 foreach便利数组
foreach可以便利任何类型的数组!!

 

$arr1=[1,2,3,4,5,"name"=>"张三"];
 foreach($arr1 as $item){
     echo "{$item}<br>";
 }
 $arr1=[1,2,3,4,5,"name"=>"张三"];
 foreach($arr1 as $key=>$value){
     echo "{$key}=>{$value}<br>";
 }

 

 

 

使用list()/each()/while()便利数组 

list():用于将数组中的每一个值赋给list函数的每一个参数。(list函数的参数个数,不能大于数组中元素的个数)
 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."<br>";
echo $b."<br>";
echo $c."<br>";
echo $d."<br>";
技术分享

 


 

each():函数的作用
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循环,配合each进行便利

 

while($a=each($arr1)){
     echo "{$a[0]}==>{$a[1]}<br>";
     echo "{$a[‘key‘]}==>{$a[‘value‘]}<br>";
 }
 reset($arr1);//将数组指针恢复到最初位置
 
 while(list($key,$value)=each($arr1)){
     echo "{$key}==>{$value}<br>";
 }
 reset($arr1);
 var_dump($arr1);
技术分享

 

 

 

小星星的php

标签:释放   use   索引   无法   加载   bsp   break   开源   网页   

原文地址:http://www.cnblogs.com/scd903686521/p/7705294.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!