PHP学习笔记
关于PHP的输出语法
echo : 适用于整型、浮点型、字符串这类标量类型
print_r : 适用于对象。数组这种二维或多维数据
var_dump : 不仅可以打印数据本身,还可以打印数据的类型
<?php $test = 0.2; // 声明一个变量 var_dump($test); // 输出 float(0.2) echo $test; // 输出 0.2 print_r($test); // 输出 0.2
关于PHP的变量
1、PHP的变量命名规范
用“$”开头加变量名声明,变量名是字母。下划线。数组的组合,不能以数字作为开头。PHP变量名是区分大小写的,意味着如 $a 、 $A 不是同个变量
变量定义后只在当前区域内有效,在function内部无法访问
例子:
<?php $test = '这是变量'; // 声明一个变量 echo $test; // 输出一个变量 ?>
2、变量的类型 : 浮点型、 整型、 字符串、布尔型、null 型、数组、对象、资源型(在PHP中可以任意修改变量的值与类型)
浮点型进行运算的结果不一定准确,会被约等于 如: 0.2 + 0.1 不一定等于 0.3
在整数型中,如果是 0 开头的整数,会默认使用八进制进行转换,如: $test = 028 输出的值并不是 28
布尔型的变量直接输出的话。true输出为字符串 1 , false 输出为字符串 " "
变量为 nul l的几种情况 : 1、声明一个变量赋值为 null 2、某个变量被 unset掉 (unset 是销毁一个变量) 3、只声明不赋值
3、 动态变量
动态变量,即变量名可以是另一个变量的值,PHP语法允许变量名字仍是一个变量 例子:
<?php
$str = "hello";
$hello = "welcome to PHP";
echo $$str; // 输出 welcome to PHP
4、检测一个变量
isset() : 检测变量是否存在,返回布尔值
unset() : 销毁一个变量,使它的值变为null
is_int() : 检测是否整型
is_string() : 检测是否字符串型
is_float() : 检测是否浮点型
is_bool() : 检测是否布尔型
is_null() : 检测是null型
gettype() : 直接获取一个变量的类型,返回该变量的类型
<?php $a = '刘备'; if(isset($a)) { echo '已经存在'; }
5、变量间的赋值 分为 普通赋值 和 引用赋值
普通赋值 只是把某个变量的值复制一份给另一个变量,两个变量直接值的改变不相互影响
引用赋值 是把某个变量的存储空间指向另一个变量的存储空间,其中一个值发生改变,另一个也改变。使用unset清除其中一个变量,另一个变量的值并不等于null, 两个变量同时指向一个内存地址,其中一个销毁,另一个还存在,那么内存就不会被释放
<?php $a = 5; $b = 3; $a = &$b; // 引用赋值 & 符号 echo $a, $b; // 输出3 3 $a = 6; echo $a, $b; // 输出6 6
关于PHP的常量
常量的类型 :浮点型、 整型、 字符串、布尔型、null 型 (五种类型称为 标量类型,常量只能赋值这五种类型;array、object、resource 都不可以赋值给常量)
常量的声明: 使用 define(‘常量名’ , ‘常量值’) 结构进行定义,注意没有$ 符号。习惯性使用大写命名(语法上规则跟变量一样)
常量的特点: 定义了的常量不能重新赋值,也不能重新使用define进行定义。常量一旦定义,在全局都有效,没有“作用域”的限制
常量的检测: 如果引用了未定义的常量,会将该常量名当做字符串直接输出,使用 defined('变量名') 进行检测 某个常量是否定义
动态常量: 使用 constant(‘变量名’) ,如 constant( $val ) ,则会把 $val 的值当做一个常量的名称进行解析
<?php $who = $_GET['who']; define('TEST', '这是一个常量'); define('A', '账上'); echo TEST; echo constant($who);
关于PHP的运算符
算术运算符: 加、减、乘、除、取余 依次是 + - * / % ; 在取余运算中,结果的正负取决于被除数的正负
比较运算符: 大于、小于、大于等于、小于等于、等于、全等于、不等于 、不全等于 依次是 > < >= <= == === != !==
字符串运算符: PHP字符串拼接使用的是 .
逻辑运算符 : 或者、 并且 、亦或、依次是 | | && xor 亦或表示两个条件,一个为真,一个为假时才成立
三元运算符: 条件?执行一 :执行二
递增递减运算符: ++ --
按位运算符: & 把2个二进制值对齐,把1看成true, 把0看成false,然后每个位上都做 并且 运算
| 把2个二进制值对齐,把1看成true, 把0看成false,然后每个位上都做 或者 运算
^ 把2个二进制值对齐,把1看成true, 把0看成false,然后每个位上都做 亦或 运算
移位运算符: << >>
<?php $a = 'abc'; $b = 'def'; $c = $a.$b; echo $c; // 输出 abcdef if($a == 'abc' xor $b == '') { echo '成立'; }; $d = 3; $e = $d++; echo $e, $d; // 输出 3, 4
其实就是二进制和逻辑运算符的结合,将值转化为二进制后再进行比较运算,计算机里的信息都是以0,1(二进制)来存储的,一个可以存储0/1的单元,称为位(bit)。8个位组成一个字节(Byte),字节是计算机里最基本的单位,即数据最小也会占用一个字节的内存。如 5的二进制是101,在计算机中为 0000 0101
/* 12的二进制为 0000 1100 5的二进制为 0000 0101 12 & 5 = 0000 0100 12 | 5 = 0000 1101 12 ^ 5 = 0000 1001 */ echo 12 & 5; // 输出 4 echo 12 | 5; // 输出 13 echo 12 ^ 5; // 输出 9
在不同的类型进行比较时,会把变量转换成一致的类型再进行比较:
布尔值 ==> 字符串 true 转换为 1 false 转换为 0
字符串 ==> 数字的转换 从字符串左侧开始查找数字,直到第一个非数字结束,取出来的这一部分为转换后的值 如 3q455 转换为 3 ; sdasdasd 转换为 0 sdasdasd+ 0 的结果为 0
字符串 ==> 布尔型 ‘ ’ 字符串、 ' 0 ' 字符串 转换为 false 其他都转为 true
数字 ==> 布尔的转换 只有整型的 0 和浮点型的 0.0 转为 false 其他都转为 true
数字 ==> 字符串的转换 直接原样输出 如: echo 'abc'.123 输出 abc123
关于PHP的控制结构 语法跟JS完全一样
PHP的控制结构分为 顺序、分支、循环
顺序结构:代码按照书写的顺序,从上往下执行
分支结构:根据条件判断执行某段代码,例如 if 判断
break 表示跳出整个循环,破坏整个循环; continue 表示跳过目前这次循环,继续下次循环
for ($i = 0; $i < 10 ; $i ++) { if ($i == 5) { continue } }
关于进制知识
在十进制中,基数最大是9,因为到10,就把基数1进位到2位来表示了
在M进制中,基数的最大值都是 M - 1
在PHP中,在数字前面加上0,表示使用的是八进制 比如 echo 0123
在PHP中,在数字前面加上0x,表示使用的是十六进制 比如 echo 0x123c
在PHP中,如果使用的基数超过当前进制类型的最大基数,那么PHP会自动忽略舍弃错误基数
关于PHP的函数语法
函数的命名规范: 跟变量一样,但是不区分大小写
在PHP函数中,声明的函数需要传几个参数,调用时传的参数不得少于声明时的形参,如果调用时的实参多于形参,则自动舍弃
最简单的函数声明
function test ($num) { echo $num; return $num; }
函数的默认传参
function test ($country = '中国') { echo ' 我来自'. $country; }
test();
关于函数的作用域:
在PHP中,函数运行时有自己独立的变量空间,函数体内的变量与外界的变量无关,即使是变量的名字相同
在PHP中,函数使用的变量未声明的情况下使用报错,不会自动去寻找全局变量,这点与JS不同
$num = 5;
funtion test () { $num = 10; } test(); echo $num; // 5
使用nginx跑PHP文件:
1、安装完nginx后, 打开nginx的servers 文件夹,在里面配置一个 .conf 文件, 修改文件指向地址、默认读取文件、反向代理的域名 。修改完后执行 sudo /usr/local/opt/nginx/bin/nginx -s reload 重新 reload 一下
server { listen 80; server_name t.cn; // 配置的Hosts 反向域名 charset utf-8; index index.html index.htm index.php; // 默认读取文件 root /Users/zhengweijie/Desktop/php; // 指向的文件地址 location ~ \.php$ { #root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } access_log off; }
2、在SwitchHosts 里面添加配置的 Hosts 反向域名
3、 查看php 和 nginx 是否已经启动,启动后在浏览器打开配置的域名访问
/usr/local/opt/php71/sbin/php71-fpm start 启动php
ps- ef | grep php 查看php进程 ps- ef | grep 进程名