PHP入门

PHP基本语法

PHP代码被<?PHP   ?>所包裹,变量名以$开头,每条代码以 ; 号结尾
变量名区分大小写,一般以字母或下划线开头,不可以用数组开头

<?PHP
$name = 'Mary';

?>

变量与基本数据类型

PHP中的数据类型

  1. int 整型
    $num = 120;
  2. float 浮点型
    $num = 1.2;
  3. string 字符串
    包含在双引号或单引号中的内容
    $str = 'name';
  4. array 数组类型
    用来存储一组数据,如用来存储一个序列或者一个人的基本信息
    $arr = array(1,2,3,4,5,6);
    使用以上方法定义的数组取值时通过数组元素下标来取值,数组下标是从0开始的,如$arr[1]的值为2;
    $arr = array('name' => 'Mary', 'age' =>22, 'sex' => 'F') ;
    使用以上方法定义的数组取值时通过数组键来取值,如$arr['name']值为Mary。
    混合定义的数组中,取值时有所不同
    $arr=array('b','ad', 4 => 'Mary', 'abc' ,'def');
    当取数组中最后一个元素的值时,若使用索引为$arr[3]会取不到数组中最后一个元素,由于他前边被定义了键4,所以若要取最后一个元素的值需要使用$arr[6]来取值。
  5. bool 布尔类型
    false和true,即真或假$bo = true;
  6. object 对象类型
    使用new关键字创建的对象,如创建一个mysql连接的对象
    $conn = new mysqli('server','user','password');
  7. resource 资源型
    使用特殊函数得到,如文件资源
    $f = fopen('filename','r');

变量的定义与使用:

$name = 'Mary';
echo "name的值为 $name !\n";
echo "name的值为{$name}!\n";
echo 'name的值为'.$name.'!'.PHP_EOL;
echo 'name的值为$name\n';

上例中定义了一个名为name,值为Mary的变量
在PHP代码中,变量的定义以 $ 符号开始,每行代码以封号 ’ ; ’ 结束
echo 是一个输出关键字,输出$name的值
在使用变量是有几个需要注意的地方:

  1. 当变量和其他字符连接在一起输出时,在变量名后需要有空格和其他字符分隔开来,否则PHP无法识别变量,会将变量和与连接在一起来的字符串作为整体作为字符串输出。
  2. 若需要将变量连接到字符串中但又不想和其他字符间有空格,可以向第3行一样,使用花括号 { } 将变量包裹起来;或者如第四行一样,使用 . 将字符串与变量连接起来,其中PHP_EOL是PHP中的常量\n,即可以输出换行符。
  3. 在定义变量和使用变量时,单引号包裹的内容,特殊含义的字符会被转义,即只会表示其字符本身,而不会有特殊含义,如$n = '\n'; 该变量只表示\n字符本身,而不是换行。

如图为以上代码输出:
在这里插入图片描述

变量的类型

可变变量

$a = 12;
$b = 'a';
$c = 'b';
echo '$$b值为:'.$$b.PHP_EOL;
echo '$$c值为:'.$$c.PHP_EOL;
echo '$$$c值为:'.$$$c.PHP_EOL;
以上代码存在这样的关系$b变量的值为$a变量的名称,$c的值为$b变量的名称;
$$b意为取$b得值作为a变量名,求$$b=$a=12
$$$c意为取$c的值作为变量名,求$$$c=$$b=$a=12
输出结果如图:

在这里插入图片描述

外部变量

可以获取用户提交信息等,可以在代码文件任意位置访问
以下几个变量数据类型皆为数组
变量名作用使用
$_GET获取用户通过GET方式提交的数据$_GET[‘name’]
$_POST获取用户通过POST方式提交的数据$_POST[‘name’]
$_REQUEST获取用户通过GET或POST方式提交的数据$_REQUEST[‘name’]
$_FILES获取用户上传文件信息$_FILES[‘f’]
$_SERVER获取服务器或用户相关信息$_SERVER[’'REMOTE_ADDR]
$_COOKIE获取用户提交的cookie$_COOKIE[‘user’]
$_SESSION获取session会话信息$_SESSION[‘user’]

全局变量

即可以全局访问的变量,可以在当前代码文件除函数内部外任意位置访问的变量
若需要在函数内部访问,需要使用 global 关键字声明变量
$name = 'Mary';

function get_name(){
    echo '$name的值为:'.$name.'!';
}
get_name();

echo '函数外部 $name的值为:'.$name.'!'.PHP_EOL;

如图:
函数内未使用global声明全局变量,在函数内部无法访问到全局变量$name,输出为空:
在这里插入图片描述
使用 global 声明全局变量

$name = 'Mary';

function get_name(){
    global $name;
    echo '函数内部 $name的值为:'.$name.'!'.PHP_EOL;
}
get_name();

echo '函数外部 $name的值为:'.$name.'!'.PHP_EOL;

如图:
函数内使用global声明全局变量,在函数内部可以访问到全局变量$name
在这里插入图片描述

局部变量

只能在函数内部访问
function get_name(){
    $name = 'Mary';
    echo '函数内部 $name的值为:'.$name.'!'.PHP_EOL;
}
get_name();

echo '函数外部 $name的值为:'.$name.'!'.PHP_EOL;

在这里插入图片描述

静态变量

在函数内使用static声明静态变量
函数内的局部变量会在函数调用结束后被释放,下一次调用函数时局部变量初始化,不保存上次调用的执行结果。
在使用static声明静态变量后,函数调用后会保存该变量的值,下一次调用仍使用上一次调用结束时的值。
静态变量的使用:
C语言中的strtok(char*,const char*)函数通过静态函数保存了字符串分割的指针位置,方便下次调用再次进行分割字符串
function get_num(){
    $s=1;
    $s++;
    echo $s.PHP_EOL;
}
get_num();
get_num();

如图为局部变量,两次调用函数的输出结果
在这里插入图片描述

function get_num(){
    static $s=1;
    $s++;
    echo $s.PHP_EOL;
}
get_num();
get_num();

如图为静态变量,两次调用函数的结果
在这里插入图片描述

常量的定义与使用

常量不可更改,使用define(‘NUM’,23) 来定义,常量通常大写

常用的魔法常量:

//返回执行代码所在的行号
echo __LINE__;
//返回执行代码所在的文件完整路径
echo __FILE__;
返回执行代码所在的文件目录
echo __DIR__;

输出语句的使用

  1. echo 输出语句,可以输出多个字符串,变量,以及函数返回值
$name = 'Mary';
echo phpinfo(); 
echo '为什么?','怎么做?';
echo $name;
  1. print 一次只能输出一个字符串,变量,函数返回值,执行效率也没有echo高
print $name;
print phpinfo();
print 'why?';
  1. print_r() 可以输出变量,字符串,主要可以用它输出数组
$arr = [1,23,4,5];
print_r($arr);
//函数输出
Array
(
    [0] => 1
    [1] => 23
    [2] => 4
    [3] => 5
)
  1. var_dump() 不光可以输出变量,字符串,数组,还可以输出他们的数据类型
$arr = [1,23,4,5];
var_dump($arr);
//函数输出
Array
(
    [0] => 1
    [1] => 23
    [2] => 4
    [3] => 5
)

流程控制语句

流程控制语句用于控制程序执行流程,根据不同的条件执行不同的代。
判断括号中的条件,若条件为真,执行花括号中的代码,若为假,跳过花括号中的代码继续往下执行。
在PHP中:
true/TRUE,非0值,非空值为真
false/FALSE,0,null,空值(空数组,空字符串’’)

流程控制语句格式:

  1. if 语句
//1.可以写单条if判断
if(条件){
}

//2.if...else组合,条件成立输出1,否则输出0
if(条件){
	echo 1;
}else{
	echo 0;
}

//3.if...elseif...elseif...else,elseif可以嵌套多层
if(条件1){
	echo 1}elseif(条件2){
	echo 2;
}elseif(条件3){
	echo 3;
}else{
	echo 0;
}

三元运算符的使用

$n = 3>4 ? 'a':'b';
该语句同
if(3>4){
	$n = 'a';
}else{
	$n = 'b';
}
  1. Switch语句

switch 语句只需要case 判断的内容和switch($str) 中的$str一致,就执行case之后的代码内容,直到遇到break,或者switch代码块结束,若$str和任何case判断都不匹配,执行default中的代码。

$str = '下雨';
switch($str){
	case '下雪':
		echo '多加棉衣';
	case '下雨': 
		echo '需要带伞';
		break;
	case  '不下雨':
		echo '不需要带伞';
		break;
	default: echo '啥啥都没,要什么自行车!';
}

代码解析:
以上代码,输出为:需要带伞
若$str = ‘下雪’;输出为:多加棉衣需要带伞,由于第一个case没有break,所以他会继续向下执行,直到遇到break或者执行到switch代码块结束。

循环语句

循环语句分为4种:

  1. while循环
while(条件){
}
  1. do…while
do{
}while(条件)

do…while语句与while语句的区别:
do…while语句先执行do语句代码块中的内容,然后执行while语句进行判断是否进入下一次循环;
所有do…while语句中do语句的代码块至少执行一次

  1. for
//for循环中先通过表达式1设置一个初始值
//然后判断是否符合循环条件
//若循环条件符合,在执行完当前循环后,执行表达式2的操作
//其中表达式1可以写在for循环之前,表达式2可以放for循环循环体内,但是for循环的格式要报错不变,for(;条件;)
for(表达式1;条件; 表达式2){
}
  1. foreach
$arr = array(1,2,'name'=>'Mary')
//用来遍历数组,输出$value为数组中的每个元素的值
foreach($arr as $value){
	echo $value;
}
//输出$value为数组中的每个元素的键及其值,普通数组的键为其索引值
foreach($arr as $key => $value){
	echo "$key = $value"
}

常用在循环中的几个关键字,continue跳过之后的执行代码,break跳出当前循环

$num = 0;
while($num<8){
    $num++;
    if($num==2){
        echo'跳过以下代码'.PHP_EOL;
        continue;
    }elseif($num==4){
        echo '跳出循环'.PHP_EOL;
        break;
    }
    echo '$num = '.$num.PHP_EOL;
}

箭头所指为循环中因continue和break而未输出的内容
在这里插入图片描述

函数创建与调用

函数由函数名,形参,函数体组成,通过function关键字创建
函数调用,使用函数名,传递正确的参数即可调用

$name = 'Mary';
$age = 12
function func($A,$B){
	echo $A.PHP_EOL;
	echo $B.PHP_EOL;
	return 0;  //返回值,调用者可使用变量接收返回值
}
$ret = func($name,$age);

常用运算符

算术运算符

+ 加 - 减 * 乘 / 除 %取余
在编写代码时若某变量做自增和自减运算,可以编写为$num++$num--
$num++ = $num+1,$num-- = $num-1
自增和自减还可以写++$num--$num
$num++++$num的区别:这两种自增的写法单独写的时候没有区别,但是在自增的同时进行赋值的话会有一些区别;
$a = $num++会先执行$a = $num的赋值操作,然后做$num+1操作
$a = ++$num会先执行$num+1的赋值操作,然后做把$num+1的值赋值给$a

逻辑运算符

逻辑运算符常用在条件判断中

  1. and 与运算,必须所有条件成立才为真
    在这里插入图片描述
  2. or 或运算,只要有一个条件为真即为真
    在这里插入图片描述
  3. ! 非运算取反
    在这里插入图片描述

常用函数

判断变量类型的函数

is_int();              判断是否时整型数据
is_bool();           判断是否时bool类型
is_float();           判断是否时浮点类型
is_string();         判断是否时字符串类型
is_array();          判断是否时数组
is_object();         判断是否是对象类型
is_null();             判断是否为空类型
is_resource();     判断是否是资源类型
is_scalar() ;        判断是否为标量,即是否是整型、浮点型、字符串、布尔型
is_numeric();      判断是否为数值型,如:‘123’为数值型
is_callable();       判断是否为函数

数值计算函数

//返回随机数
rand();
mt_rand();
//计算绝对值,返回29
abs(-29);
//舍去小数,返回12
floor(12.9);
//浮点数取余,返回0.1
fmod(7.6,2.5);
//求2的3次方,返回8
pow(2,3);
//返回平方根,3
sqrt(9);
//返回最大值4
max(1,2,3,4);
//返回圆周率
pi();

字符串处理函数

字符串编码:
iconv(原字符串编码,转换输出的字符串编码,字符串)

  1. 去除字符中的字符
//去除两端多余的空格,换行,制表符等,可以通过第二个参数指定去除的内容
trim(' asd ',' \t\n\r');
rtrim();     //去除右端指定字符
ltrim();     //去除左端指定字符

  1. 分割字符串
//分割字符串,以几个字符为一组进行分割,返回数组
str_split('abcd',2);

//分割字符串,若第二次需继续分割,则只需传递分割字符即可,如字符串分割完毕,返回false
$str = 'a,b,c,d';
$c = strtok($str,',');
while($c){
    echo $c;
    $c = strtok(',');
}

//通过分割符将字符串分割,返回数组
explode(',','a,v,sa,asd')
  1. 字符串大小写转换与填充排版
//填充字符串,根据指定字符串长度使用指定字符进行填充,默认向右填充,使用四个参数指定方向
str_pad('abc',10,'0',STR_PAD_RIGHT);
//将字符串全部转换为小写
strtolower('ABC');
//将字符串全部转换为大写
strtoupper('abc asd');
//将字符串首字母转换为大写
ucfirst('abc asd');
//将字符串每个单词首字母转换为大写
ucwords('abc def');
  1. 字符串连接
//使用 - 连接数组中每个元素
join('-',$arr);
  1. 字符串截取
///表示字符索引为1的位置截取两个字符,字符索引从0开始
substr('abcd',1,2);  //返回bc
substr('abcd',2,-1);  //返回c

//返回指定字符串在指定字符串中到结束位置的字符
subchr('abcdef','c');  //返回cdef
subrchr('abcdef','c');  //返回cdef
  1. 字符串替换
//将字符串qwe中的q替换为c
str_replace('q','c','qwe');
//不区分大小写进行替换
str_ireplace('q','c','Qwe');
  1. 字符统计
//统计as在字符串asdasdasd中出现的次数,返回3
substr_count('asdasdasd','as');
//返回字符串字节长度,返回3
strlen('asd');
  1. 获取字符在字符串中的位置
//返回b第一次出现的abcdb字符串中的位置,返回1
strpos('abcdb','b');
//返回b第一次出现的abcdb字符串中的位置,返回1,不区分大小写
stripos('aBcdB','b');
//处理多字节字符,获取子串在字符串中的位置
mb_strpos();
  1. 安全字符处理
//把字符转换为html实体
htmlentities('<script>');
//去除成对<>内的内容,若只有一个<则<后的字符会全部去除,返回asd
strip_tags('<asdfasd>asd');
//在指定字符前添加转义字符\,返回\ab\cd
$str = addcslashes('abcd','ac');
//去除转义字符\
stripslashes('abc\n');
  1. ASCII字符转换
//返回ascii码对应的字符
chr(97);
//返回字符对应的ascii码
ord('a');
  1. 字符串比较
//不区分大小写比较两字符串,返回0
strcasecmp('Ab','aB');
//区分大小写比较两字符串,返回1
strcmp('Ab','ab')
  1. 其他字符串处理函数
//将字符串解析为数组中的元素,使用键值的方式,多个元素使用&符号连接
parse_str('name=mary&age=22&sex=F',$arr);
//将字符串打乱返回
str_shuffle('abcde');
//字符串拼接,返回格式化拼接好的字符串
$str = sprintf('%d %s',1,'c')

数组函数

array_shift();弹出数组中第一个元素
array_pop();弹出数组中最后一个元素

$arr = [1,'a'=>'97','c'];

echo array_shift($arr).PHP_EOL;
echo array_pop($arr).PHP_EOL;
print_r($arr);

输出结果:
1
c
Array
(
    [a] => 97
)

array_unshift();压入元素到数组第一个
array_push();压入元素到数组最后一个

$arr = [12];

array_unshift($arr,'a');
array_push($arr,'b');
print_r($arr);

输出结果:
Array
(
    [0] => a
    [1] => 1
    [2] => 2
    [3] => b
)

range();返回一个包含指定范围的数组

print_r(range(1,4));

输出结果:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

array_merge();将多个数组合并为一个数组,两数组相加有也可以合并数组

$arr1 = [1,2];
$arr2 = ['name'=>'Mary'];
print_r(array_merge($arr1,$arr2));

输出结果:
Array
(
    [0] => 1
    [1] => 2
    [name] => Mary
)

in_array();检查数组中是否有某元素

$arr = [1,2,'name'=>'Mary'];
var_dump(in_array('Mary',$arr));

输出结果:
bool(true)

array_rand();返回数组中一个随机的值(键)

$arr = [1,'name'=>'Mary','age'=>'22',3];
print_r(array_rand($arr));

输出结果:
age

array_unique();个数组去重

$arr = [1,2,1,'name'=>'Mary','age'=>'22',3];
print_r(array_unique($arr));

输出结果:
Array
(
    [0] => 1
    [1] => 2
    [name] => Mary
    [age] => 22
    [3] => 3
)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值