【从零开始】Day3 PHP探索日期+1

一、 标量数据类型  (整型,浮点型,布尔型,字符串型)
1.1 浮点数(float)
浮点数就是小数,浮点数也叫单精度。在PHP中float和double是一样的。
由于浮点数转成二进制是乘二正向取整,可能会一直循环下去。所以浮点数保存的值是近似值。
浮点数的范围比整型大。理论上浮点数最大值是1.8E+308=1.8*10^308
浮点数的精度有效位数是14位。
注:在C、java、c#语言中表示小数除了浮点数以外,还有双精度(double),双精度的范围比单精度要广。
例:var_dump(0.9==(1-0.1));//true
var_dump(0.1==(1-0.9));//false

因此不能用浮点数做比较。如果要比浮点数,通过bccomp(值1,值2,比较的位数)函数去比较,如果两个数相等就返回0,如果左边的大于右边的返回1,否则返回-1。
例: echo bccomp(0.1, (1-0.9),50);//0
    echo bccomp(1.123, 1.124356,3);//-1

1.2 布尔型(boolean)
布尔型就是true和false。


1.3 字符串型。
在js中,单引号和双引号是一样的
在PHP中,如果字符串内没有变量,显示结果单引号和双引号是一样的。
如果字符串内有变量,显示结果不一样,双引号的变量要解析。
单引号是字符串,双引号要做运算(将变量的值替换成运算值)。
注:因为双引号要运算,单引号不需要运算,所以,单引号的执行效率比双引号的要高。''不运算,""运算.
例:$aa = "tomsie";
echo "my name is $aa,<br>";//my name is tomsie
echo 'my name is $aa,<br>';my name is $aa
echo ''{$aa}is my name";//tomsie is my name 注:{}大括号和$挨在一起才有效,对括号内进行运算。


1.4 转义字符(\)
将具有特殊含义的字符转义成普通字符。
例: echo "习主席说:\"中国梦\".";  //习主席说:"中国梦".
注:转义字符后如果跟的是特殊字符,将特殊字符转成普通字符。如果跟的是普通字符,将正常显示。
但是要注意转义字符和r、n、t的组合。\r表示回车,\n表示换行,\t表示制表符。


1.4.1、ASCII (American Standard Code for Information Interchange)
键盘上的每个字符都有一个编码和它对应,这个编码就是ascii码。
ascii码表是连续的,小写字符比大写字符数字大。相差32.
php命令。 ord('')将字符转成十进制ascii码。
chr()将十进制的数字转成字符。
计算机内部使用二进制计算。简单理解就是电子元件在二进制0与1的匹配上更易实现,与稳定性更高。
\转义字符可以转义ascii码
例:echo “\101”;//A   将八进制转成字符   问:为什么101自动识别成8进制而不是10进制?
echo "\x41";//A  将十六进制转成字符


1.5使用字符串定界符
作用:为输出大量文本提供简单方法。格式,<<<xxxxx  需要输出的代码     xxxxx;
开始和结束的定界符必须一样。名字由字符、数字、下划线组成,不能以数字开头。
开启标识符前面有三个小于号“<<<”.
*结束标识符必须顶格写,前面不能有空格和其他字符,标识符后面也不能有空格。
字符串定界符分为heredoc和nowdoc。
heredoc “”             nowdoc ‘’
相当于双引号字符串 相当于单引号字符串
变量被解析         变量不被解析
例:
<?php
<<<str 
<script>

function output(){


}
</script>
str;
?>



二、复合数据类型


2.1 数组:

        计算机中一段连续的空间。

数组分为:索引数组和关联数组


2.1.1 索引数组
通过元素的位置做下标。
$arrayStu=array('tom','ckos','kros');
echo $arrayStu[0];// tom


2.2.2 关联数组,数组的值和一个字符串做关联,形成键值对.符号 =>。个人感觉两者区别不大。[x]中会进行运算,感觉很灵活。null=‘’
$emp=array('name'=>'aas','age'=>'18','sex'=>'man');
echo $emp['name'];//aas


2.2.3 数组的声明
默认情况下,在索引数组中,第一个元素的下标是0,后面一次递增1.
一:$arrayName=array('','','');
二:$arrayName[0]=xxxx;
      $arrayName[1]=xxxxx;
2.2.4 extract()
把数组中的键值对拆分,形成变量。可以单独取用。(从数组中的变量导入到当前符号表中)
$bbb=array('name'=>'lili','kaka'=>'13');
    extract($bbb);
  echo "$name","<br>","$kaka";//lili    ,    13



2.2.5 数组的分类
1)按照元素的键值关系分为:
a)索引数组:通过位置做下标。
b)关联数组:通过字符串做下标,键值存在某种关联。


注:不能按照键的数据类型来判断是否是索引数组,必须看下标和值的关联关系。$aa=array(1=>"tom",2=>"jack");也属于关联数组,
因为数字不属于下标,array[0]是tom,1=tom。


2)按数组的结构分
a)一维数组。数组本身。
b)多维数组 ,数组中存数组。




三、特殊类型
3.1 资源型
a)PHP引用的外部资源。
b)资源只能获取,不能创建。
c)资源也是有类别的,比如链接资源,数据流资源。


3.2 NULL
a)表示没有定义的变量。
b)NULL不区分大小写。
c)调用一个没有返回值的函数,默认返回NULL



四、数据类型转换
数据类型时数据在内存中存储的结构,和建立在该数据结构上的操作算法的集合。这就意味不同的
数据类型的运算操作可能不一样。


4.1 自动转换
根据操作运算符,将数据根据运算方法需要的数据类型进行转换。



4.2 强制转换
语法:(数据类型)数据
例:$nab=-12;
    var_dump((bool)$nab);//bool(true)
         *其他数据类型和bool型之间的规律
1、字符串和bool转换规律,非0非空,为true
2、数字和bool转换规律,非0非空,为true
3、数组和bool转换规律,非0非空,为true


五、运算符
1.5.1 算数运算符
一元运算符 :负号(一元减)、++、--、
二元运算符 :+ 、-、 *、 /、%(模数,取余)。 
注:在js中,+号可以运算数字和字符串。在php中,+号只能运算数字。!!!
++是递增1,要注意++前置和++后置。a++是后自增,++a是先自增。
例:echo('<hr>');
    $b=10;
    $c=($b++)+($b++)+($b++);
    echo $c;//33

echo('<hr>');
    $b=10;
    $c=(++$b)+(++$b)+(++$b);
    echo $c;//36


1.5.2 关系运算符
有>、>= 、<、 <=、 ==、 !=、 ===、 !==。
比较运算符的结果不是true就是false。
注意==和===的区别。==只做值的比较,不做数据类型的比较,===都做,很严格。


1.5.3 逻辑运算符
&&与、||或、!非
逻辑运算符的作用是用来连接比较运算符的。
&&两边都为true输出true,同时具有短路功能,左边不成立不进行后面的运算。
||有一个为true就为true
例。年龄在20到30之间。
$age>=20&&$age<=30;
!{$age<20||$age>30};
=!($age<20)&&!($age>30);
=$age>=20&&$age<=30;
注:逻辑运算符去括号 ,每个表达式取非,或变与,与变或。


1.5.4 字符串连接符
(.)就是一个dot。相当于js中的字符串运算的+号。


1.5.5 赋值运算符
=、+=、-=、*=、/=、%=、.=。
例:a += b//a=a+b
a.=b // a=ab

1.5.6 三元运算符
语法:表达式?值1(true的返回值):值2(false的返回值).。如果表达式为真返回值1,表达式为假返回值2。感觉if else语句的简化版。
例:$num=20;
echo $num%2==0?偶数:基数。//偶数


六、注释
1.1、html注释:<!--     -->
1.2、css注释  /*    */
1.3、js注释: 单行注释//       /*多行注释*/
1.4、php注释://单行注释或者#单行注释       /*多行注释*/
1.5、MySql注释: --单行注释     /*多行注释*/




七、判断语句
一共有四个:单分支,双分支、多分支、多路判定。


  1.1、单分支
语法:if(条件){
//代码块
};//如果条件成立就执行,不成立就不执行。
替代语法:if(条件):
代码块
endif;//
替代语法也就是说if这里是什么 endif后面的if就是什么。
如果if块中就一句代码,则大括号是可以省略的。




1.2、双分支
语法 :if(条件){
//代码1
}else{
//代码2
};
如果条件成立就执行代码1,不成立则执行代码2.
替代语法:if():
代码1;
else:
代码2;
endif;


八、判断变量是否为空
在处理一个没有定义的变量时候会报错,所以在处理变量之前,先要判断一下变量,判断的函数常用如下:
isset()判断变量是否设置,并且设置的值不为空。
empty() 判断值是否为空//布尔值能转成false的都是空 如数字0,0.0,‘’,array(),null。。。


九、判断闰年(练习)
1、能被4整除,但不能被100整除。
2、能被400整除。
知识点:trim():函数去除数据两边空格。
is_numeric():判断是否是数字或字符串。
is_int():判断是否是整型。

字符串+=0 //将字符串型转成数字。

        练习次数:n=1;($_POST)大写!

猜你喜欢

转载自blog.csdn.net/CCCUUUJJJ/article/details/80368893