数据表达

基本语法

  1. // 标记
  2. <?php
  3. ?>
  4. <script language="php"></script>
  5. <?
  6. // 需要在php.ini中开启short_open_tag=on
  7. ?>
  8. echo date('当前时间是:Y-m-d H:i:s 星期w'); // 分号结束,echo输出,斜杠注释
  9. phpinfo(); // php执行环境

变量

  1. /*
  2. * 变量,区分大小写,可使用字母、数字、下划线、非关键字
  3. * var_dump用于显示变量的完整信息
  4. * isset用于判断变量是否存值
  5. * unset用于销毁变量,断开变量名与数据之间的关系
  6. */
  7. $var = 1;
  8. var_dump(isset($var));
  9. unset($var);
  10. $varOld = 1;
  11. $varValNew = $varOld; // 值传递
  12. $varNew = &$varOld; // 引用传递
  13. $varOld = 0;
  14. echo $varOld, $varValNew, $varNew
  15. /*
  16. * 预定义变量,超全局变量
  17. * $_GET:存储使用GET方法提交过来的数据
  18. * $_POST:存储使用POST方法提交过来的数据
  19. * $_REQUEST:$_GET和$_POST的合集
  20. * $_SERVER:请求中的系统信息
  21. * $GLOBALS:存储了所有自定义的全局变量的数组
  22. */
  23. echo $_SERVER["PHP_SELF"]; // 网页地址,不含域名
  24. echo $_SERVER["REMOTE_ADDR"]; // 客户端IP
  25. echo $_SERVER["SERVER_NAME"]; // 服务器名
  26. echo $_SERVER["SERVER_ADDR"]; // 服务器IP
  27. echo $_SERVER["DOCUMENT_ROOT"]; // 网站文件夹路径
  28. echo $_SERVER["SCRIPT_NAME"]; // 当前网页地址
  29. $varRaw = 1;
  30. $varStrRaw = 'varRaw';
  31. echo $$varStrRaw; // 可变变量

常量

常量只能存储简单数据类型,且不可变。

  1. // 全大写
  2. define('PI', 3.1415926);
  3. const E = 2.71828;
  4. echo constant('E'); // 取常量值
  5. defined('PI'); // 判断常量是否存在
  6. /*
  7. * 预定义常量
  8. * PHP_VERSION:php版本信息
  9. * PHP_OS:php运行所在系统信息
  10. * PHP_INT_MAX:php版本中最大整数值
  11. * M_PI:圆周率
  12. */
  13. echo M_PI;
  14. /*
  15. * 魔术常量
  16. * __DIR__:文件所在目录
  17. * __FILE__:文件所在路径
  18. * __LINE__:常量所在行号
  19. */
  20. echo __DIR__;

数据类型

  1. /*
  2. * 标量类型,基本类型,简单类型
  3. * 字符串string。双引号中的$会被识别为变量,要注意使用转义字符\
  4. * 整数integer,int
  5. * 浮点数double、float
  6. * 布尔boolean,bool。其中false、0、0.0、""、'0'、空数组都会被当作false
  7. */
  8. $dec = 123;
  9. $bin = 0b01;
  10. $oct = 0123;
  11. $hex = 0xDDEEFF;
  12. decbin($dec); // 十进制转二进制
  13. decoct($dec); // 十进制转八进制
  14. dechex($dec); // 十进制转十六进制
  15. bindec($bin);
  16. octdec($oct);
  17. hexdec($hex);
  18. $f = 123e2; // 123*10^2
  19. $v1 = 0.1;
  20. $v2 = 0.2;
  21. $v3 = 0.3;
  22. round($v3 * 10000)==round(($v1 + $v2)*10000); // 浮点数存在精度问题,相等比较不可靠
  23. /*
  24. * 复合类型
  25. * 数组array
  26. * 对象object
  27. */
  28. $arr = array('name'=>'姓名', 'age'=>18);
  29. $arrNew = ['姓名', 18];
  30. $arrNew[1] = 20; // 数组赋值
  31. print_r($arrNew); // 输出变量的详细信息
  32. echo gettype($arr[0]); // 判断数据类型
  33. settype($arr[1], 'string'); // 设置数据类型
  34. is_int($arr[0]);
  35. is_bool($arr[0]);
  36. is_string($arr[0]);
  37. is_float($arr[0]);
  38. is_array($arr[0]);
  39. is_null($arr[0]);
  40. is_numeric($arr[0]); // 判断是否为数值类型,包含整数、小数、纯数字字符串
  41. is_object($arr[0]);
  42. empty($arr[0]); // 判数据为空,如0、0.0、""、"0"、false、array()
  43. /*
  44. * 特殊类型
  45. * null:真空
  46. * 资源resource
  47. */

数值计算

运算符

  1. /*
  2. * 取余,如非整数,会先自动转换为整数(直接忽略小数部分)再取余
  3. * 相等==可能会发生自动转换,全等===更严格
  4. */
  5. 10.2 % 3.6 === 1;
  6. $var = "1".true; // 连接运算符
  7. ++$var; // 自增减运算符有分前后
  8. /*
  9. * 逻辑运算符
  10. * 与&&、或||、非!
  11. * 存在短路规则,如果左侧满足,则不判断右侧
  12. */
  13. /*
  14. * 位运算符
  15. * 按位与&:全1为1
  16. * 按位或|:全0为0
  17. * 按位非~:取反
  18. * 异或^:相同为0,不同为1
  19. * 左移<<、右移>>:左移即该数n位乘以2的n次方,右移同理
  20. */
  21. if(@mysqli_connect('localhost', 'root', 'passwd')){
  22. // 错误抑制符@
  23. }

流程控制

分支

  1. $var = 50;
  2. if ($var < 0) {
  3. echo "$var < 0";
  4. } elseif ($var > 0) {
  5. echo "$var > 0";
  6. } else {
  7. echo "$var =0";
  8. }
  9. switch($var % 2 === 0) {
  10. case true:
  11. echo "{$var}是偶数";
  12. break 1; // 中断第一层循环
  13. default:
  14. echo "{$var}是奇数";
  15. }

循环

  1. $var = 50;
  2. while($var<=0){
  3. $var--;
  4. }
  5. do{
  6. $var--;
  7. }while($var<=0);
  8. for($i=0;$i++;$i<10){
  9. }

代码复用

函数

  1. /*
  2. * 1. 函数定义、调用与返回值
  3. * 2. 形参与实参
  4. * 3. 值传递与引用传递
  5. * 4. 参数默认值
  6. */
  7. $var = 1;
  8. function func(&$a, $n = 5)
  9. {
  10. // 与全局变量属于引用关系,指向同一份数据
  11. global $var;
  12. $var++;
  13. // 静态变量不会在函数结束时被销毁
  14. static $s = 1;
  15. $n += $s;
  16. return $a += $n;
  17. }
  18. $f = "func";
  19. echo $f($var, $var); // 可变函数
  20. $file = $_GET['fileName'];
  21. echo strstr($file, '.'); // 从指定字符第一次出现开始截取到尾
  22. echo strrchr($file, '.'); // 从指定字符最后一次出现开始截取到尾
  23. echo substr($file, 1, 4); // 从指定位置开始截取
  24. $anonymous = function() {}; // 匿名函数
  25. // 系统函数
  26. function_exists("func"); // 判断函数存在
  27. func_get_arg(2); // 获取第2个实参
  28. func_num_args(); // 获取实参个数
  29. $arr = func_get_args(); // 获取所有实参
  30. count($arr); // 求数组长度
  31. max($arr); // 最大值
  32. min($arr); // 最小值
  33. ceil(4.9); // 向上取整
  34. floor(-4.1); // 向下取整
  35. abs(-2); // 绝对值
  36. sqrt(2); // 开方
  37. pow(3, 2); // 幂运算
  38. rand(2, 3); // 闭区间随机整数
  39. mt_rand(0, 1); // 闭区间随机整数,更快
  40. time(); // 获取当前时间,精确到秒
  41. // 获取当前时间,精确到微秒
  42. microtime(true); // 返回浮点数
  43. microtime(false); // 返回字符串
  44. mktime(12, 30, 59, 12, 31, 2020); // 时、分、秒、月、日、年
  45. idate('Y'); // 得到时间特定值
  46. strtotime('2001-10-31'); // 字符串转时间戳
  47. date_default_timezone_set('PRC'); // 设置时区

文件

  1. include "index.html"; // 加载文件,载入出错,后续继续执行
  2. include_once "func.php"; // 不会重复载入
  3. require "func.php"; // 如果载入出错,则终止
  4. require_once "func.php";
  5. getcwd(); // 当前绝对路径

其他

异常处理

  1. ini_set('display_errors', 1); // 设置错误显示
  2. ini_set('error_reporting', E_ERROR); // 设置报错级别
  3. ini_set('log_errors', 1); // 设置错误日志
  4. ini_set('error_log', 'err.log'); // 设置错误日志路径
  5. trigger_error("错误提示内容", E_USER_NOTICE);
  6. set_error_handler("handle_error"); // 设置错误处理器
  7. function handle_error($errCode, $errMsg, $errFile, $errLine){
  8. file_put_contents("error.txt", $errMsg);
  9. } // 自定义错误只能处理不是E_ERROR的错误

字符串

  1. 单引号字符串:只能使用\和’这俩转义字符
  2. 双引号字符串:可以使用更多的转义符,$会被识别为变量,变量建议使用大括号包裹 ```php // 结束行只允许出现标识符与分号 $hereDoc = <<<”HereDoc” heredoc与双引号字符串同 HereDoc;

$nowDoc = <<<’NowDoc’ nowdoc写啥就是啥,变量也不会被识别 NowDoc;

$string = “字 符 串 \n>”; strlen($string); // 字符串字节数,GBK汉字占2Bytes,UTF8汉字占3Bytes mb_strlen($string, “utf8”); // 字符串字符数,php.ini中需要打开mbstring.so strpos($string, “ “); // 首次出现的位置 strrpos($string, “ “); // 尾次出现的位置

trim($string); // 清除空白 ltrim($string); rtrim($string); str_pad($string, 16, “0”, STR_PAD_BOTH); // 填充到指定字节长度

$arr = [‘测’, ‘试’]; implode($arr); // 连接数组的值 join($arr); // 同implode print_r(explode(“ “, $string)); // 使用指定字符分割字符串 print_r(str_split($string, 4)); // 使用指定字节长度分割字符串

str_replace(“ “, “-“, $string); substr_replace($string, “-“, 4); // 替换字符串指定位置的字符

strtolower($string); strtoupper($string); lcfirst($string); // 首字符为小写 ucfirst($string); // 首字符为大写 ucwords($string); // 所有单词首字母大写

nl2br($string); // 换行符变
addslashes($string); // 转义 $str = htmlspecialchars($string); // 转义为html实体字符 htmlspecialchars_decode($str);

  1. <a name="UwnYm"></a>
  2. ### 数组
  3. ```php
  4. $arr = array('测', '试');
  5. foreach($arr as $key=>$value){
  6. echo "{$key} => {$value}";
  7. }
  8. reset($arr); // 移到最前一位,并获取值
  9. $len = count($arr);
  10. for($i = 0; $i <= $len; $i++){
  11. $key = key($arr); // 当前指针的下标
  12. $value = current($arr); // 当前指针的值
  13. }
  14. end($arr); // 移到最后一位,并获取值
  15. prev($arr); // 往前移,并获取前一位的值
  16. next($arr); // 往后移,并获取下一位的值
  17. in_array("测", $arr);
  18. range(3, 9); // 生成闭区间整数数组
  19. array_keys($arr); // 数组键集合
  20. array_values($arr); // 数组值集合
  21. array_push($arr, 1); // 压入并返回键
  22. array_pop($arr); // 弹出并返回末位值
  23. array_reverse($arr); // 反转数组