R0ot's Blog

分享代码,记录生活

0%

PHP语言的学习

基本语法

<?php 作为开头
每句话以 ;结尾
?> 作为结尾

注释

// 单行注释
/** */ 多行注释

传值与传址

$a=$b 传值,指向不同的内存空间
$a=&$b 传址,指向相同的内存空间,同时改变

局部变量,全局变量与超全局变量

全局声明(函数外声明)的变量会保存在$-GLOBALS中,函数内默认不能访问全局变量,访问需要加上global关键字
也可以使用全局数组$GLOBALS('变量名')调用全局变量

超全局变量

菜鸟教程全局变量

局部变量:函数内部声明的变量,只能在函数内部使用

变量检测和变量删除

isset() 检测
unset() 删除,在函数中用global引入的全局变量无法删除

static关键字

延长生命周期(好像和c语言一样)

字符串界定符

作用就是按照原样,包括换行格式什么的,输出在其内部的东西,任何特殊字符都不需要转义

$str =<<<EOF
EOF;

strlen()和mb_strlen()

strlen() 用于计算字符串长度
mb_strlen(变量名,'编码形式(utf8)') 宽字节计算长度

PHP类型比较

php是弱类型语音,经常要对变量进行比较;
松散比较:使用两个==,只比较值
严格比较:使用三个===,既比较值,也比较类型

常量

常量被定义后,在脚本其他任何地方不能被改变,常量是全局的,函数内也可以直接使用

  1. 使用define(“名称”,”常量的值”,是否区分大小写)
    例如 define("GREE","欢迎欢迎",ture)//常量名前面不能加$
  2. 使用const 名称=常量的值
    例如 const NAME='哈哈哈 //常量一般情况下用大写字母

并置运算符

使两个字符串相加
例如 "hello"."world"

strpos()函数

用于在字符串内找一个指定的字符或文本,如果找到匹配则返回第一个匹配(第一个字符要从0开始算)的字符位置,否则返回FALSE
例如

1
2
3
4
<?php
$txt="hello world";
echo strpos($txt,"world");
?>

输出 6

逻辑运算符

异或
and && or || xor !

异或:有且仅有一个为true,则返回true
非:如果为假则返回真

组合比较符(太空船)

$c = $a <=> $b;

如果 $a > $b, 则 $c 的值为 1。
如果 $a == $b, 则 $c 的值为 0。
如果 $a < $b, 则 $c 的值为 -1。

c语言的strcmp()函数

数组

数组创建

  1. $arr=array();
  2. $arr=[];

多维数组

  1. 多维数组创建
    $arr=[
    [];
    ];
  2. 多维数组的调用
    $arr[0][1] //可以索引数组和关联数组相结合

关联数组
分配给数组指定的键值对,以下两种创建方式是相同的
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

1
2
3
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

与数组有关的函数(方法)

  1. key($arr);
    返回数组的键值(下标)
  2. current($arr)
    返回数组的值
  3. next($arr)
    使数组指针下移,返回下移后的数组的值,最后返回FALSE
  4. prev($arr)
    使数组指针上移,返回下移后的数组的值,最后返回FALSE
  5. count($arr)
    计算数组长度(元素数量)
  6. list($a,$b)=&arr
    将数组第一个值付给$a,第二个值付给$b,以此类推,加上循环可以遍历数组

数组排列

sort() - 对数组进行  升序  排列
rsort() - 对数组进行  降序  排列
asort() - 根据关联数组的  值,  对数组进行  升序  排列
ksort() - 根据关联数组的  键,对数组进行  升序  排列
arsort() - 根据关联数组的  值,对数组进行  降序  排列
krsort() - 根据关联数组的  键,对数组进行  降序  排列
r是降序,k是键,a是值

运行实例

1
2
3
4
5
<?php
$cars=array("Volvo","BMW","Toyota");
rsort($cars); //逆序排列字母元素
print_r($cars)
?>

结果 Array( [0] => BMW [1] => Toyota [2] => Volvo ) 自动标出键值对

循环

php语言的for循环,while循环和c语言中的循环没有区别,这里不过多介绍
主要介绍运行foreach循环
foreach用于遍历数组,有以下两种形式

foreach($array as $value)
{
    要执行代码;   //每进行一次循环,当前数组元素的值就会被赋值给 $value 
}
foreach($array as $key=> &value)
{
    要执行代码;   //每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量
}

例如

1
2
3
4
5
6
7
<?php
$x=array("aa"=> 1,"bb"=> 2,"cc"=> 3);
foreach($x as $key=>$value)
{
echo $key. "=>" .$value. PHP_EOL;
}
?>

结果

aa=>1
bb=>2
cc=>3

函数

  1. php函数用function关键字
  2. 函数可以传参,可以传址,如果参数个数不确定的情况下可以用点语法
    例如 function sum(...$var){} //注意$var是个数组
  3. 参数可以设定默认值
    例如 function sum($var=100){} //没有传递参数时使用默认值
  4. 参数可以强制类型
    例如 function sum(int $var){}
    //在函数前面加上declare(strict_types=1);变成严格模式,字符与整形也不能互传
  5. 函数返回值约束
    例如 function sum(int $var): string
    //返回类型前加上问号,代表返回值可有可无
  6. 函数的特殊用法:变量函数
    函数在调用时的函数名可以是一个变量
    例如:
    &name="fun";
    function fun(){};
    $name();
    

根据函数名的变化调用不同的函数

魔术常量

PHP 向它运行的任何脚本提供了大量的预定义常量。
定义:有八个魔术常量的值是随着在代码中的位置而改变

__LIEN__
__FILE__
__DIR__
__FUNCTION__
__CLASS__
__TRAIL__
__METHOD__
__NAMESPACE__
  1. __LINE__
    文件中LINE所在的行号

  2. __FILE__
    文件完整的路径和文件名

  3. __DIR__
    文件所在的目录(也就是FILE减去文件名==dirname(__FILE__)

  4. __FUNCTION__
    函数名称(当然得写在函数里)

  5. __CLASS__
    类的名称,php5起返回类被定义时候的名称(区分大小写)

  6. __TRAIT__
    trait的名字

  7. __METHOD__
    类的方法名,返回该方法被定义时的名称

  8. __NAMESPACE__
    当前命名空间的名称

命名空间

语法:
namespace 空间名;
每一个命名空间类似于一个文件夹,函数类似于文件,同一个文件夹不能有相同命名的文件,所以需要使用命名空间,使用命名空间的函数时,用NAMESPACE\函数名的格式调用