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 进程名 

原文地址:https://www.cnblogs.com/zhengweijie/p/8310104.html