PHP基本语法和数据类型学习笔记
PHP基本语法和数据类型:
(1)、PHP基本语法:
1、htm 和 php 混编
2、一个语句以 ; (分号结束)
3、如何定义一个变量,和变量的使用
(2)、PHP数据运算类型
四种标量类型:
boolean(布尔型) 理解为真假型
integer(整型)
float(浮点型,也作“double”) 理解为小数型
string(字符串)
两种复合类型:
array(数组)
object(对象)
(3)PHP五种运算类型
1、算术运算
2、赋值运算(如:$a=100)
3、比较运算(如:$a<$b)
4、逻辑运算(如:$a&&$b)
5、递增凝递减运算(如:$a++)
(4)switch条件语句
switch条件语句
<?php
$i=1;
switch($i){
case 0;
echo “i的值为0″;
break;
case 1;
echo “i的值为1″;
break;
case 2;
echo “i的值为2″;
break;
default: echo “以上的几个值都不是”;
}
?>
break n 跳出循环语句
break n跳出n层循环
例:
<?php
for($i=1;$i<=5;$i++){
echo “i=”.$i.”<br>”;
for($j=1;$j<=5;$j++){
echo “ j=”.$j.”<br>”;
for($k=1;$k<=5;$k++){
echo “ k=”.$k.”<br>”;
if($k==2){
break;
}
}
if($j==3){
break 2;
}
}
echo “<br>”;
}
?>
(5)do while循环
<?php
//先执行一次再判断
do{
echo “执行循环”;
$a++;
}while($a>100);//注意这里有一个分号
echo “<br>”;
//先判断再执行
while($a>100){
echo “执行循环”;
$a++;
}
?>
PHP数组常用到的函数
foreach($arr as $key=>$val){}//遍历数组
count($arr)//统计数组的长度
is_array($arr)//判断数组
explode(“key”,$str)//分割字符串成数组
php中数据类型有整型、小数型(浮动数)、布尔类型、字符及数组,变量,常量等下面我们一起来看看吧。一 PHP常用数据类型
1.基本数据类型
1.1整型
1.2小数型(浮动数) 包含单精度和双精度
1.3布尔类型 (表示真,和 假)
1.4字符串
2.复合数据类型
2.1数组(array)
2.2对象 (object)
3.特殊数据类型
3.1null
3.2资源类型(resource)
二 PHP的基本语法
1.PHP 定义变量必需以 $ 这个符号开头,区分大小写。
2.变量的名称,应当以字母或者下划线开头,不要用数字开头,也不要用特殊字符开头。
第一个PHP程序
代码如下 | 复制代码 |
<?php echo "Hello World!"; ?> |
1 注释
1.1多行
/*
xxxx
*/
1.2单行
//xxxxx
2.赋值
$a = 'test';
2.1 检查变量是否已声明
isset($a)
2.2 释放变量
unset($a);
2.3 静态变量
static $a;
静态变量可在一个函数几次调用中保持数值,而不会被系统释放,但只能在声明它的函数集中访问到,只能在第一次声明时初始化。
3. 基本类型
3.1 数字类型
3.1.1整数(integer,关键字int)
.整数可用8进制 10进制 16进制 表示
$a=123; //10进制
$b=0123; //8进制
$c=0x123; //16进制
.由于操作系统不同整数精度变化很大,但32位是最常见的
3.1.2浮点(float,关键字float,64位浮点数,精度14位)
.PHP中float和double是等同的
.使用浮点数切记:他们只是近似值
如:2.5在内部常被表示为2.499999999
又如:
if(0.7+0.1>=0.8){
echo 'a';
}else{
echo 'b';
}
返回值为b,这取决于浮点数的确切实现方式,推荐做法是避免使用浮点值做比较
3.2 字符串
.用单引号或双引号包围
如:echo "Hello"; echo 'Hello';
.双引号中的变量会被解释,单引号中的则不会
如:var $name = 'jano';
echo "my name is $name.";//显示 my name is jano
echo 'my name is $name'; //显示 my name is $name
.双引号中的变量可用{}包围来区分变量和后面的字母
如:var $n = "my name is {$name}Yu";//如果没有{}就无法区分变量和字符
.heredoc
$a = <<< HTM
skjdfjsd
lksdfjsdlf
HTML; //后面的表示必须顶在最前面
.获取字符串中的某个字符
$a = 'Hello';
echo $a{1}; // 显示e
echo $a[1]; // 显示e
推荐使用第一种写法可以和数组区分开
3.3 布尔值
true false
4.常用函数
. nl2br 吧字符串中的换行符转化成<br />
如:echo nl2br($a);
.var_dump
显示变量类型和值,如:var_dump($a);
.print_r
var_dump加强版,打印对象类型和内容,数组则打出所有元素,类对象则打印所有成员
如:$a = array(1,2,3,4,5);
print_r($a);
5.数组
数组用array方法声明
例:
$a = array('a','b','c');
$a = array('a','b',array(1,2,3));
.默认从索引0开始赋值
如:$a[]='a'; //$a[0]='a';
$a[]='b'; //$a[1]='b';
.使用字符串值做索引
如:
$a = array('car'=>'Ferrari','Number'=>21,'City'=>'CQ');
echo $a['car'];
.遍历并更改数组元素值
foreach($array as $key=>&$value){// &$value
//...
}
6.特殊类型和值
.NULL 区分大小写,表示无值,从没赋值,用unset清除
.资源
7.强制类型转换
(int)$a
(float)$a
(string)$a
(bool)$a
(array)$a
(object)$a
.特殊的
(int)"0123";//返回123,没有把8进制0123转换为10进制数字
(int)"123 mu tou ren";//返回123
(int)"mu tou ren 123";//返回0,因为转换只从第一个字符开始读,发现非数字立即停止
.转换为布尔值
非空非零则为true(包括正数和负数),0为false
包含0个元素的数组为false
NULL为false
转换为整数
.浮点转换为整型
小数点后的数字舍弃,如果超过证书有效位,结果可能是0或者最小负数
.布尔转换为整型
true为1
false为0
.字符串转换为整型
对字符串左侧第一位进行判断。如果第一位是数字,则会从第一位开始将读取到数字转换成整数。如果第一位不是数字结果为0.
.PHP没有提供其他类型转换为整数的方法
转换为浮点数
.整数转换为浮点数
结果不变
.布尔转换为浮点数
true为1
false为0
.字符串转换成浮点数
与整数类似
.PHP没有提供其他类型转换为浮点数的方法
转换为字符串
将非字符串转换为字符串的方法是在变量前使用“(string)”强制转换。
规则如下:
1.整型或浮点型:结果为其值
2.布尔型:true转换为'1' , false转换为空字符串
3.对象或数组:如果被转换的变量是对象或数组,则转换结果将为字符串对象或字符串数组,需要根据实际情况进行分析。
4.资源类型:返回资源标识号
8.类型判断与获取
.转换成数组
在变量前用“(array)”强制转换。将变量转换成员变量数据类型相同的数组,数组中只有一个元素。
如:
$a=1;
print_r((array)$a);
结果:
Array
(
[0]=> 1
)
.转换为对象
在变量前用“(object)”强制转换。将生成一个新对象,其中名为scalar的成员变量将包含原变量的值。如:
$a=1;
$o = (object)$a;
echo $o->scalar;
使用函数进行数据转换
bool settype(var, string type)
type值: boolean,integer,float,string,array,object,null
.判断类型函数
is_integer 如:is_integer($a); //返回true或false
is_float
is_double
is_real
is_int
is_long
is_numeric
is_string
is_bool
is_array
is_object
is_null
is_resource
is_scalar 是否为一个标量
.类型获取
gettype($a);
9.变量和常量
.常量
define('NUM_USR','0');
$u = NUM_USR;
.引用
$a=0;
$b = &$a;
$b++;
echo $a;//显示1,因为$b是$a的引用,$b改变就表示$a改变
10.操作符
10.1 数学操作符
+ - * / %(取余)
10.2 比较运算符
==
=== 值相同,类型相同
!=
<> 和!=一样都是不等于
!== 值相同,类型不同
<
>
<=
>=
10.3 逻辑运算符
and && 与
or || 或
xor 异或,若一个为true,但不是两个都为true,则结果为true
! 非
10.4 按位操作
& 按位与
| 按位或
^ 按位异或
~ 按位非
<< 左移位
>> 右移位
10.5 三元操作符
表示问号前面的表达式是否为true,是则返回冒号前面的值,不是则返回冒号后面的值
如:
$c = $a > $b ? 1:2;
echo $a>$b ? "hello":"no";
.下面两个语句是等价的
$a = ($b != 'china') ? true : false;
$a = $b != 'china';
10.6 其他操作符
++ 自增
-- 自减
@ 忽略特定函数的调用失败报错,如:$u=@file(xxx);
. 字符串连接操作,如:$a = 'hello'.'world'; $a = 'hello'.$a;
11.7 特殊的逻辑运算符表达式
$a = 0;
$b = 100;
echo $a || $b;//$a转换为bool值为true时,echo $a,否则echo $b,不管$b表达式是否为true,此表达式会始终显示100
echo $a && $b;//将什么都不显示,因为整个表达式$a && $b返回false
$a = 1;
$b = 0;
echo $a && $b;//将什么都不显示,因为整个表达式$a && $b返回false
echo $a && $b;//始终显示$a
$a = 1;
$b = 0;
$a && $b=12;
echo $b;//显示12,$a是否为true,为true就会执行$b=12,系统首先读取&&,知道这是个与,于是开始执行&&前面的语句,发现返回true就再 执行&&后面的语句,发现返回false就不会再执行&&后面的语句了,因为&&逻辑,只要有一个false 整个表达式就变成false
常用函数
代码如下 | 复制代码 |
//获取网页地址 //获取网址参数 //获取用户代理 //获取完整的url //包含端口号的完整url //只取路径 |
看个例子,可以获取完整url
代码如下 | 复制代码 |
<?php function curpageurl() if ($_server["https"] == "on") if ($_server["server_port"] != "80") |
例
代码如下 | 复制代码 |
$array = array(1,2,3,4,5,6); break 2; |
例
代码如下 | 复制代码 |
<?php //执行嵌套循环,外层循环3次,内层循环2次。当执行到第2次外层循环时,使用break跳出,不执行其内层循环。 |
上述代码的输出页面结果如下:
外层循环0 开始
内层循环0-0
内层循环0-1
外层循环0 结束
外层循环1 开始
外层循环1 结束
外层循环2 开始
内层循环2-0
内层循环2-1
外层循环2 结束
上面的代码很容易理解,break用于跳出当前层次的循环。不过,与Java等编程语言不同的是,在PHP中,我们还可以在关键字break后跟上一个数字,该数字表示需要跳出的循环层数,这样可以使用一个break语句,直接跳出多重循环。例如:
代码如下 | 复制代码 |
<?php //执行嵌套循环,外层循环3次,内层循环2次。当执行到第2次外层循环时,使用break 2跳出,直接跳出2层循环 |
上述示例代码输出的页面结果如下:
外层循环0 开始
内层循环0-0
内层循环0-1
外层循环0 结束
外层循环1 开始
因此,在PHP中,我们可以使用break后跟上指定的数字,来直接跳出指定层数的循环。
注意:break后跟的数字,只能为正整数,并且不能超过实际可以跳出的循环层数。否则会报致命错误(Fatal Error)。
1.正则表达式的介绍和作用。
01.什么是正则表达式?
正则表达式(英语:Regular Expression、regex或regexp,缩写为RE),也译为正规表示法、常规表示法,在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。
规则语法
02.主要作用:分割、匹配、查找、替换。
表达式 | 匹配 |
---|---|
/^s*$/ |
匹配空行。 |
/d{2}-d{5}/ |
验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。 |
/<s*(S+)(s[^>]*)?>[sS]*<s*/1s*>/ |
匹配 HTML 标记。 |
2.PHP中两个常用的正则函数。
preg_match 正则函数,以perl预言为基础。(比较效率,需要自定义一个开始结束符。)
ereg 正则函数,以POSIX为基础(Uniox、Script)。
3.正则表达式中包括的元素。
01.原子(普通字符:a-z A-Z 0-9、原子表、转义字符)。
02.原子符(有特殊功能的字符)。
03.模式修正符(系统内置部分模块,类似函数)。
4.正则表达式中的“原子”。
01.a-z A-Z _ 0-9 //最常见的字符。
02.(abc) (skd) //用括号包含起来的单元符号。
03.[abcs] [^abd] //贪婪匹配,用方括号包含的源自表,原子表中^代表排除或者相反内容。
04.转义字符(区分大小写)
d 包含所有数字 == [0-9]。
D 非包含所有数字 == [^0-9]。
w 包含所有英文字符 == [a-zA-Z_0-9]。
W 非包含所有英文字符&数字,用来匹配特殊符号 == [^a-zA-Z_0-9]。
s 包含空白区域如回车、换行、分页符 == [fnr]。
元字符
* 匹配前一个内容的0次1次或多次
. 匹配内容的0次1次或多次,但不包含回车换行
+ 匹配前一个内容的1次或多次
?匹配前一个内容的0次或1次
| 选择匹配类似PHP中的| (因为这个运算符合是弱类型导致前面最为整体匹配)
^ 匹配字符串首部内容
$ 匹配字符串尾部内容
b 匹配单词边界,边界可以是空格或者特殊符合
B 匹配除带单词边界意外内容
{m} 匹配前一个内容的重复次数为M次
{m,} 匹配前一个内容的重复次数大于等于M次
{m,n} 匹配前一个内容的重复次数M次到N次
( ) 合并整体匹配,并放入内存,可使用1 2…依次获取
实例:
代码如下 | 复制代码 |
<?php if (preg_match($mode, $str, $end)) { //mode正则模块、str正则内容、end正则结果,以数组输出。 |
常用正则
* 1、 ^S+[a-z A-Z]$ 不能为空 不能有空格 只能是英文字母
* 2、 S{6,} 不能为空 六位以上
* 3、 ^d+$ 不能有空格 不能非数字
* 4、 (.*)(.jpg|.bmp)$ 只能是jpg和bmp格式
* 5、 ^d{4}-d{1,2}-d{1,2}$ 只能是2004-10-22格式
* 6、 ^0$ 至少选一项
* 7、 ^0{2,}$ 至少选两项
* 8、 ^[s|S]{20,}$ 不能为空 二十字以上
* 9、 ^+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(.|-))+[a-z]{2,6}$邮件
* 10、 w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*([,;]s*w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*)* 输入多个地址用逗号或空格分隔邮件
* 11、 ^(([0-9]+))?[0-9]{7,8}$电话号码7位或8位或前面有区号例如(022)87341628
* 12、 ^[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(.[a-z A-Z 0-9 _]+)+(,[a-z A-Z 0-9 _]+@[a-z A-Z
0-9 _]+(.[a-z A-Z 0-9 _]+)+)*$
* 只能是字母、数字、下划线;必须有@和.同时格式要规范 邮件
* 13 ^w+@w+(.w+)+(,w+@w+(.w+)+)*$上面表达式也可以写成这样子,更精练。
14 ^w+((-w+)|(.w+))*@w+((.|-)w+)*.w+$ [/size]
匹配中文字符的正则表达式: [u4e00-u9fa5]
匹配特定数字:
^[1-9]d*$ //匹配正整数
^-[1-9]d*$ //匹配负整数
^-?[1-9]d*$ //匹配整数
^[1-9]d* |0$ //匹配非负整数(正整数 + 0)
^-[1-9]d* |0$ //匹配非正整数(负整数 + 0)
^[1-9]d*.d* |0.d*[1-9]d*$ //匹配正浮点数
^-([1-9]d*.d* |0.d*[1-9]d*)$ //匹配负浮点数
^-?([1-9]d*.d* |0.d*[1-9]d* |0?.0+ |0)$ //匹配浮点数
^[1-9]d*.d* |0.d*[1-9]d* |0?.0+ |0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d* |0.d*[1-9]d*)) |0?.0+ |0$ //匹配非正浮点数(负浮点数 + 0)
由字母a~z(不区分大小写)、数字0~9、减号或下划线组成
只能以数字或字母开头和结尾 用户名长度为4~18个字符
代码如下 | 复制代码 |
^[a-za-z0-9]{1}[a-za-z0-9|-|_]{2-16}[a-za-z0-9]{1}$ |
用户名为大写字母小写字母或下划线,并以字母开头,长度为6-20
代码如下 | 复制代码 |
^[a-za-z][wd_]{5,19} |
用户名:包括英文小写、汉字、数字、下划线,不能全部是数字,下划线不能在末尾
代码如下 | 复制代码 |
/^[a-z0-9_u4e00-u9fa5]+[^_]$/g utf-8下 preg_match("/^[a-z0-9_x80-xff]+[^_]$/g",$a); gbk下: preg_match("/^[a-z0-9_".chr(0xa1)."-".chr(0xff)."]+[^_]$/",$a) |
邮箱
代码如下 | 复制代码 |
<?php |
url地址
代码如下 | 复制代码 |
<?php |
相关文章
php中浮点型(float)和整型(integer)数据类型详解
文章分析了关于php中浮点型(float)和整型(integer)数据类型的用法区别以及在那种情况下会出现数据长度不够。 取值只能为True或者False,当其他类型转化为boolean类...2016-11-25- 本篇文章主要是对c#中数据类型占用的字节数进行了详细的介绍。需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25
- 虽然Javascript是弱类型语言,但是,它也有自己的几种数据类型,分别是:Number、String、Boolean、Object、Udefined、Null。其中,Object属于复杂数据类型,Object 由无序的键值对组成。其余几种都属于简单数据类型。注意:变量...2015-10-21
- 这篇文章主要为大家详细介绍了JavaScript实现数据类型的相互转换,感兴趣的朋友可以参考一下...2016-03-09
- 我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
- 本文主要介绍了C#的四种基本数据类型的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
- 1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31
- 这篇文章主要介绍了基于PostgreSQL和mysql数据类型对比兼容,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-25
- 当我们在星际中开地图和几家电脑作战的时候,电脑的几个玩家相当于结盟,一旦我们出兵进攻某一家电脑,其余的电脑会出兵救援。 那么如何让各家电脑知道自己的盟友被攻击了...2016-11-25
- 这篇文章主要给大家介绍了关于toString.call()通用的判断数据类型方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-29
- 这篇文章主要介绍了C#数据类型及其转换详解,在C#中,数据类型可以分为几种类型,今天小编通过本文给大家详细介绍,需要的朋友可以参考下...2020-07-10
- 举一个简单的date例子 我将使用echo命令把内容输出到我们的客户端(浏览器)。我将使用下面的代码做为基础代码。 代码如下 复制代码 <!DOCTY...2016-11-25
- JavaScript语言的基本语法要求有哪些呐?下面将为大家一一解答: 一、区分大小写 JavaScript语言区分字符大小写,两个字符串相同大小写不同,被认为是不同的字符串。JavaScript语言的关键字也区分大小写,按语法要求应...2015-11-24
- 这篇文章主要为大家分享了一个简单的javascript数据类型验证方法,感兴趣的小伙伴们可以参考一下...2016-01-05
- 这篇文章主要介绍了C#中的不可变数据类型介绍(不可变对象、不可变集合),本文讲解了不可变对象、自定义不可变集合、Net提供的不可变集合、不可变优点、不可变对象缺点等内容,需要的朋友可以参考下...2020-06-25
- 这篇文章主要针对JavaScript数据类型整理的学习笔记,分享给大家,感兴趣的小伙伴们可以参考一下...2016-01-26
- 一篇Android学习笔记之多界面切换实例,希望对各位朋友有所帮助。 用过VB 、 VC#的朋友都知道,在VB或VC#里要进行窗口(界面)切换很容易 例如在VB、C#里: 有 Fom1、...2016-09-20
- 引用:意思是将原始对象在内存中的地址传递给目标对象,就相当于原始对象和目标对象指向的是同一个内存地址。此时,如果对目标对象或者原始对象进行修改,内存中的数据也会改...2016-11-25
- 这篇文章主要介绍了JS判断数据类型的几种常用方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-08
- 怎么去判断一个数据属于哪个数据类型,这个是很常见的操作,我们一般都会想到typeof和instanceof这两个常见的方法,但有时候这两种方法并不能满足我们的需求,下面这篇文章主要给大家介绍了关于JS中数据类型的正确判断方法,需要的朋友可以参考下...2021-08-26