MENU

PHP

April 15, 2020 • 开发

最近抓着零散的时间学一下PHP7

以下内容主要记录PHP的特性,适合有其他语言基础后阅读

持续更新中

相关链接

基础

标记风格

被括起来的所有代码都要符合PHP规范,如果均为PHP代码,?>可以省略

<?php
?>

执行符

识别指令的符号,其实就是所谓的代码以";"结尾,特性是可以换行和空白,这个特性可以用来排版

<?php
    echo "dd
          dd
            ";
?>

注释

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

变量

js一样,不需要声明类型,使用符号$声明,命名可以字母数字下划线,可以单下划线但是不能单数字

$name = value;

使用&值可以指向同一个内存地址,不会开辟新的内存空间

$name2 = &$name

可变变量

$name = 'Sosilent';
$$name = '233';#等价于$SoSilent = '233';

超全局变量

名称解释
$GLOBALS引用全局作用域中可用的全部变量
$_SERVER保存关于报头、路径和脚本位置的信息
$_REQUEST用于收集 HTML 表单提交的数据
$_POST收集提交POST的表单数据
$_GET收集提交GET的表单数据
$_FILES上传文件使用
$_ENV服务器环境变量
$_COOKIECOOKIE变量
$_SESSION会话控制

作用域

$name = 'Sosilent';
function(){
    echo $name;#作用域不对
    
    #从全局引入
    global $name;
    echo name;
}

$GLOBALS中会以字典的形式保存非函数内的变量,所以可以这样访问

echo $GLOBALS['name']

检测与删除

isset()会根据参数变量是否存在返回布尔值

isset($name);

unset()则会删除参数所指定的变量,无法删除通过global而引入的全局变量

unset($name);

静态变量

通常的,变量的声明和赋值会被覆盖

function example(){
    $num = 1;
    $num = $num + 1;
    echo $num()
}
example();
#此时重复调用会持续输出2

static关键字可以帮助函数内变量持久化的保存

function example(){
    static $num = 1;#只在第一次生效
    $num = $num + 1;
    echo $num();
}
example();
#此时重复调用则会输出2,3,4,5......

数据类型

合理使用var_dump()来获取变量类型

数值进制转换

中文英文缩写
二进制binarybin
八进制octaloct
十进制decimaldec
十六进制hexadecimalhex

转换函数的命名大概就是[源进制的缩写]+[转换后进制的缩写]例如

8转10

echo octdec(777);#551

16转10

echo hexdec("FAF");#4015

与此同时,还提供了一个转任意进制的函数

string base_convert ( string $number , int $frombase , int $tobase )

echo base_convert('10086',10,5);#10086 从 10进制转换为5进制

字符串

'"的区别,就是"中可以引用字符串

<?php
$name = 'SoSilent';

header('Content-type:text/html;charset=utf-8');#浏览器编码
$string = "{$name}'s Blog";
?>

.可以链接两个字符串,也是php中唯一一个字符串操作符


echo "hello"."World";

strlen()返回参数字符串的长度
strpos()在第一个参数中寻找第二个字符串的位置,并返回,如果没找到会返回FALSE

选择分支

IFELSE 和 Switch 都没什么特别的 太常规了


<?php
$t=date("H");
if ($t<"20")
{
    echo "Have a good day!";
}
else
{
    echo "Have a good night!";
}
?>

数组

PHP的Array也可以作为一个Dict,使用array()方法创建,Dict则需要指明建值的对应关系


$arr = array(1,2,3,4);

$dict = array("A"=>1,"B"=>2,"C"=>3,"D"=>4);

count()返回数组的长度

遍历数组


//Array
for($x=0;$x<count($array);$x++){
    echo $array[$x];
}
//Dict
foreach($array as $key=>$value){
    echo "Key = ".$key.",Value = ".$value."<br>";
}

排序

数组的排序已经被实现了,快速的记忆如下
sort()为基础的排序方法,通过增加前缀,衍生出多个方法:r表示降序排序(默认是升序)k表示根据Key进行排序,a表示根据Value进行排序,ka针对关联数组,就是所谓的Dict

单独解释前缀可以快速记忆

衍生出来的方法有rsort(),ksort(),asort(),krsort(),arsort()

循环

循环也没有什么特别的

<?php
//For
for ($i=1; $i<=5; $i++)
{
    echo "The number is " . $i . "<br>";
}

//Foreach
$x=array("one","two","three");
foreach ($x as $value)
{
    echo $value . "<br>";
}

//While
$i=1;
while($i<=5)
{
    echo "The number is " . $i . "<br>";
    $i++;
}

//Do While
do
{
    $i++;
    echo "The number is " . $i . "<br>";
}
while ($i<=5);
Leave a Comment

2 Comments
  1. 看不懂玩不透……@(汗)

    1. @灰常记忆emm,写给自己看的所以很笼统hhh@(吐舌)