创建: 2019/06/19

# TODO: 2019/07/11 foreach

https://www.sejuku.net/blog/22195#foreach

安装
 MAMP  
变量与运算符
 php标签
 <?php ... ?>

<?php
...
?>

● 在文件最后的 ?> 通常省略, 避免bug

● 输出文字

<?= 字符串; ?>
// 相当于
<?php echo 字符串; ?>
 在html里插入php

● 文件名后缀为php

 声明的分隔与注释 
 分隔符

;

 除了自定义的变量与常量都不区分大小写  
 注释
 单行注释
// 注释A...
# 注释B...  
 多行注释
/*
注释
*/
   
 变量与常量 
 变量
 声明

无需声明, 带上  $  即可

$sample = 1;

系统定义的变量

$_ 开头的是超级全局变量

 $GLOBALS  全局可用的所有变量的指针
 $_SERVER  服务器环境和运行环境
 $_GET  HTTP GET变量
 $_POST  HTTP POST变量
 $_FILES  HTTP上传文件变量
 $_REQUEST  HTTP请求变量
 $_SESSION  session变量
 $_ENV  环境变量
 $_COOKIE  HTTP cookie
 $php_errormsg  最近的错误信息
 $HTTP_RAW_POST_DATA  原生post数据
 $argc  传入脚本的参数数量
 $argv  传入脚本的参数数组 
 常量
 声明

关键词 const

const SAMPLE = 1.0
 注意  习惯上常量所有字母都大写
 已定义的常量
 核心模块变量
 PHP_VERSION_ID  运行中的php版本, 整数值
 PHP_EOL  现在OS的换行文字
 PHP_INI_MAX  整数最大值
 PHP_INT_MIN  整数最小值
 PHP_OS  现在的OS
 TRUE  true
 FALSE  false
 NULL  null
 E_ERROR  重大的运行错误
 E_PARSE  编译器的解析错误
 逻辑变量
 __LINE__  现在的行号
 __FILE__  文件的绝对路径与文件名
 __DIR__  当前文件所在文件夹
 __FUNCTION__  现在的函数名
 __CLASS__

现在的类名

# TODO: check here p42

 __TRAIT__   跟踪名
 __METHOD__  类的方法名
 __NAMESPACE__  现在的命名空间的名称
 展示字符串或变量 

都输出到html里

 输出多个值
echo a1(, a2, ...)

echo 'sample'; //=> sample
echo 'a', 'b', 'c'; //=> abc

● 只有一个变量时可以带括号

echo('sample'); // => sample
 输出一个值 
print(值) // 可以不要括号

● 连结多个值, 用  .

$sample="b";
print("a".$sample); // => ab
 debug用

# TODO: finish here p44

● 要想带换行, 放入 <pre>...</pre> 标签

http://www.w3school.com.cn/tags/tag_pre.asp

 print_r()  
 var_dump()  
   
 运算符
 代入运算符

$a = b;
 复合代入运算符
 +=, -=, *=, /=, %=  
 .=  
$a."_pdf"
 算术运算符

+, - , *, /, %, **(指数)

2**10 // => 1024
 递加递减

++, --

$a++ // 先评价式子最后递加
++$a // 先递加再评价式子

● 对字符串递加递减

认定成数字的作为数字, 认定成字母的按字母顺序

 字符串连结运算符

.

"hello "."world"; //=>hello world

● 对数字使用则自动转为字符串

100 . 200 //=? 100200

带有数字时  .  两侧放上空格

 比较运算符
 >, <  常识
 >=, <=  常识
 ==, !=  常识
 ===  两侧类型相同 且 值相等
 !==  两侧类型不同 或 值不相等
   
 php7新增
 <=>

$a <=> $b

a>b时为正, a=b时为0, a<b时为负

(相当于a-b)

 ??
$a ?? $b

a为null则用b的值, 否则用$a

● 连用

$a ?? $b ?? "default";
 逻辑运算符

&&

and

$a && $b
$a and $b

||

or

$a || $b
$a or $b
 xor

$a xor $b
 !

!$a
   
 三项运算符

逻辑式 ? true时的值 : false时的值

 位运算符
 <<, >>  移位
 &

都是1则1, 否则0

$a & $b
 | 

有1则1, 否则0

$a | $b 
 ^ 

两个相反则为1

$a ^ $b
 ~ 

0, 1对调

~$a
   
 转换运算符

php不验证类型, 根于式子自动转换。故一般不需要

(int)

(integer)

 转换为整数

(bool)

(boolean)

 转换为布尔值

(float)

(double)

(real)

 转换为浮点数
 (string)  转换为字符串
 (array)  转换为数组
 (object)   转换为object
 (unset)  转换为null
 类型运算符

如果是指定类的实例则返回true, 否则返回false

实例 instanceof 类

$now instanceof DateTime
条件与循环
 if

● 标准写法

if(c1) {
...
} else if (c2) {
...
} else if (c3) {
...
} else {
...
}

● 不带括号写法

if (c1):
...
elseif (c2):
...
else
...
endif;
 switch 

● 标准写法

switch(式子) {
case v1:
...
break;
case v2:
...
break;
...
default: // 可省略
...
break;

● 不带括号写法

switch(式子):
case v1:
...
break;
case v2:
...
break;
...
default: // 可省略
...
break;
endswitch;
 while

● 标准写法

while (c) {
...
};

● 不带括号写法

while (c):
...
endwhile;
 do-while 

● 标准写法

do {
...
} while (c);

● 不带括号写法

不存在

 for 

● 标准写法

for(初期条件; 条件式; 计数器更新方式) {
...
}

● 不带括号写法

for(初期条件; 条件式; 计数器更新方式):
...
endfor
 break  
 continue  
函数
 常用的数学函数
 abs(数值)  返回绝对值
 ceil(数值)  大于参数的最小整数
 floor(数值)  小于参数的最大整数
 max(n1, n2, ...)

获取最大值, string则为字母顺序

 min(n1, n2, ...)  获取最小值, string则为字母顺序
 sqrt(数值)  平方根
 pow(a, b)

a的b次方

相当于

a**b 
 mt_rand()  返回一个0~mt_getrandmax()之间的随机数
 mt_rand(min, max)  返回一个min~max之间的随机数
 pi()  圆周率π
 sin(n)  
 cos(n)  
 tan(n)  
 is_nan(n)  n是不是数值
 自定义函数

# TODO: 整理此处的内容

 函数定义

和js一样会提前提取函数声明, 故没有顺序

function 函数名(a1, a2, ...) {
...
return ...;
}
 参数的省略与初始值

注: 带初始值的参数后面的参数都要带初始值

function 函数名(a1, a2, ..., ar1=..., ar2=..., ...) {
...
}
 动态长度参数

参数名前带 ... , 此参数及后面的作为数组传入此

function 函数名(a1, a2, ..., ...b) {
...

● 获取参数信息

 func_get_args()  获取参数的数组
 func_num_args()  获取参数的个数
 func_get_arg()  获取指定的参数
 指定参数和返回值的类型
function 函数名(类型 参数1, 类型 参数2, ...):返回值的类型 {
...
}

● 可以指定的类型

 array  数组
 callable  回调函数
 bool  布尔值
 float  浮点数(float, double, real)
 int  整数
 string  字符串
 类名/接口名  指定的类的实例
 self  实例自身

● 可以省略返回值类型, 也可以参数里混搭不指定类型的

 传值与传指针

传指针的可以改变自身

&参数名

function sample($a, &$b) {...}
 函数指针

函数名的字符串

确认是否存在此函数, 用 function_exist()

 无名函数
function (...) use(...) {
...
}

● 用use来声明使用的外部变量

● use内的值在函数定义时确定, 不论外部怎么变use里都不变

 变量的有效域 
 变量的有效域  所在的代码块
 内部使用全局变量
global 全局变量名

"this is global";
function sample(int $a, float $b, $c):bool {
global $a;
echo $a;
return "sa";
}
 静态变量
static 变量名;
 动态生成变量 

双重$, 用指定变量的值来命名变量名

$$sample

$color = "red";
$$color = 1; // => $red = 1
字符串
   
   
   
   
数组
   
   
   
   
面向对象
 类的定义
 类定义
class 类名 {
// properties
public const 常量 = ...;
public 变量 = ...; // methods
public function 方法名(...) {
...
}
}

● 属性的初始值必须是值, 不能是式子

public $name = "a"."b"; // 不能这样
 生成实例
 生成实例
new 类名(...);
 获取属性, 呼出方法
$sample = new Sample();
$sample->$property;
$sample->method();
 $this

类方法内部获取类的属性

public function test() {
$a = $this.$b;
...
}

● 不带this的话只寻找本地属性, 故会报错

 构造函数
function __construct(...) {
...
}
 类文件与读取文件
 include(path)  遇到读取错误也会继续进行下去
 include_once(path)  且只读一次
 require(path)  遇到读取错误会抛出错误
 require_once(path)

且只读一次

实际都用这个

 静态变量, 静态方法
 声明
public static $version = "1.0.1";
public static function check_version(...) {...}
 接入
 自身类与实例处
self::类属性
self::类方法(...)

self::$version;
self::check_version(self::$version);
 其他类呼出
类名::类属性
类名::类方法(...)
   
 范围修饰符
 public  我的战车随时出发
 protected  此类和子类才能读写
 private  只有此类内部才能读写
   
 类的继承 
 类继承
class 子类 extends 父类 {
...
}
 构造函数 

父类的构造函数 parent::__construct(...)

function __construct(...) {
parent::__construct(...);
...
}
 重载 

直接重新定义原来的函数即可...

 final

禁止继承/重载

final class ...
final function ...
 trait
 定义
trait 名 {
// properties
// methods
}
 用法
use trait1, trait2, ...;

如果是外部文件里的, 要require_one(path)

 解决命名冲突

insteadof

# TODO 查查这里

 给方法增加名称

as

use aT, bT {
aT::hello as at_hello;
bT::hello as bt_hello;
aT::hello insteadof bT
}
 接口
 接口
interface 名 extends 父接口名 {
const 常数=值;
function 函数名(...);
}
 采用接口
class 名 extends 父类 implements n1, n2, ... {
...
}
 抽象类 
 定义
abstract class 名 {
abstract function 名(...);
...
// 抽象类内部功能的实现
...
}
 继承抽象类并实现方法
class 名 extends 抽象类名 {
...
function 抽象函数(...) {...}
// 此类自身的功能实现
...
}
   
表单基础
   
   
   
   
表单例
   
   
   
   
session
   
   
   
   
文件读写
   
   
   
   

最新文章

  1. BZOJ 4568 幸运数字
  2. .NET面试题解析(02)-拆箱与装箱
  3. 甲状腺癌怎样早发现 可B超检查
  4. 《Programming with Objective-C》的常规规定
  5. mysql创建远程用户
  6. repeater标签双重循环的使用
  7. Linux setjmp longjmp
  8. OpenGL超级宝典第5版&amp;&amp;开发环境搭建
  9. MyBatis的学习总结四:实现关联表查询【参考】
  10. linux下安装python linux下一些常用的命令
  11. adb链接手机调试android应用
  12. vue 使用踩坑 note
  13. BZOJ_5249_Luogu_P4364_[2018多省省队联测]_IIIDX_九省联考2018_JLOI2018_线段树
  14. Python-接口自动化(九)
  15. python chr()和ord()的含义和使用方法
  16. YII2常用知识点总结
  17. Shell编程-12-Shell脚本规范及调试
  18. 前端通信:ajax设计方案(九)--- 完善文档
  19. mac zsh环境配置java_home环境变量
  20. Java_集合操作_将元素插入List的指定位置

热门文章

  1. Codeforces 876B Divisiblity of Differences:数学【任意两数之差为k的倍数】
  2. winform 中的Anchor 和 Dock 属性设置
  3. node.js+express+jade系列一:session的使用
  4. Spring4面向切面AOP
  5. Java_基础_02_ThreadLocal
  6. hihocoder-1284 机会渺茫(水题)
  7. POJ-1564 dfs
  8. Cannot find PHPUnit in include path (.;C:\php5\pear)
  9. hdu 5269 ZYB loves Xor I 分治 || Trie
  10. sysbench安装、使用