博客列表 >PHP作用域,常量分类,字符串常用函数

PHP作用域,常量分类,字符串常用函数

xueblog9的进阶之旅
xueblog9的进阶之旅原创
2022年08月11日 17:26:27547浏览

php作用域

  1. 不支持块作用域
  2. 支持函数作用域
  3. php不可以直接访问函数外部的变量,以下5种方法可以访问外部变量
    3.1 global:关键字声明,在函数内部声明某一个变量来自外部
    3.2 $GLOBALS[‘outer’]:所有声明的全局变量,均被添加到$GLOBALS[]这个变量数组中,在函数内部直接以数组的方式进行调用,[‘变量名’],去掉’$’符号;
    3.3 匿名函数/闭包:$变量 = funtion() use ($outer),通过use()介绍外部变量到函数内部中,媒介的作用
    3.4 箭头函数:$变量=fn()=>(…外部变量的操作….),可直接调用外部的变量,php箭头函数功能不是很强大,一般很少用
    3.5 纯函数:$变量 = funtion($outer) {..$outer操作…}传参的方式引入外部变量
  4. 函数外部需要访问函数内部声明的私有变量
    4.1 return[函数返回值,私有变量],通过list(变量1,变量2),通过解构的方式去访问参数变量;
  5. 函数内部的变量与外部变量同名,内部变量赋值会覆盖外部变量的值,函数内部优先级较高

常量

  1. 常量的声明不需要’$’,并确定全部大写,蛇形命名;
  2. 两大特征:有确定的值,且不能修改
  3. 自定义常量
    3.1 define():格式(‘常量名’,’常量的值’),可用在if中,不能用在类中
    3.2 const: 编译阶段处理,速度更快,必须在作用域顶部声明,可用在类中,不能用在if中
    3.3 常量不受作用域限制,全局有效
    3.4 空字符可以当常量名,只可以用define()声明,只能用constant(‘’)输出变量值
    3.5 constant():显示一个常量,const声明的常量,不能用constant()函数来打印
  4. 预定义常量
    4.1 为系统自定义的常量,存在确定的值,用户可以直接用
    4.2 php版本的常量:PHPVERSION
    4.3 操作系统:PHPOS
    4.4 预定义常量-魔术常量,系统自动更新维护
    4.5 当前行号:LINE
    4.6 当前文件名:FILE
    4.7 当前文件所在目录:__DIR

字符串

字符串两种声明方式

  1. 单引号:纯文本,不解析变量,不转义特殊符号的转义序列,多行大段,不含变量和转义符的静态文本
    1.1 nowdoc语法格式:$变量名 = <<< ‘标识符’ ….纯文本… 标识符
  2. 双引号:模板字符串,解析变量,转义特殊符号,插值变量和特殊字符的动态模板
    2.1 heredoc语法格式:$变量名 = <<< “标识符” ….文本..模板..特殊字符.. 标识符
  3. 标识符,行业规定全部大写,可任意命名,只要成对出现即可
  4. heredoc:双引号可省略,推荐不写

字符串常用函数

  1. string与array之间的转换
    1.1 array->string:implode(‘连接符’,$arry),join():别名函数,一般只用implode
    1.2 string->array:explode(‘分隔符’,字符串变量名)
  2. 查询与替换
    2.1 获取字串:substr():子字符串,格式:($str,start,sum(数量)),sum不写,默认取到最右边
    2.2 strstr():首次出现位置符后面的所有字符,格式($str,’某个字符’,true),去除某个字符以及之后的字符,true比表示之前的字符(不包括当前的字符);
    2.3 strpos():字符首次出现的索引,格式:($str,’某个字符’,查询起点),查询起点不写默认从第一个开始查询
    2.4 str_replace():替换字符,格式:(‘目标字符’,’最终字符’,变量名),应用场景:敏感词的替换-可用数组一一对应字符串替换,目录分隔符的替换,
    2.5 strlen():获取字符串的长度
    2.6 trim():去掉首尾字符,格式:(变量名,’目标字符’),目标字符不填写,则默认去掉空格
    2.7 rtrim():去掉右边尾部字符,格式:(变量名,’目标字符’)
    2.8 ltrim():去掉左边头部字符,格式:(变量名,’目标字符’)
    2.9 strip_tags():自动过滤去掉html标签,php标签,js标签,其中html,js保留文本,php-全部过滤包括文本

    <!-- url相关 -->

    2.10 parse_str():将查询字符串转为数组,格式:(查询字符串,$变量名)
    2.11 parse_url():将url地址字符串转为数组,:格式:$变量 = parse_url(‘url地址’);
    2.12 parse_str()与parse_url()定义数组名的方式不一致,注意
    2.13 http_build_query():将数组转为查询字符串,格式:(数组)

其他

  1. 系统目录分隔符常量:DIRECTORY_SEPARATOR,配合str_replace使用可以适应不同的目录分隔符
  2. $_SERVER:当前服务器中的常量,QUERY_STRING—get请求向服务器发送查询参数

实例源码

  1. <?php
  2. $sum = '方法1';
  3. // global方式获取外部变量
  4. function text():string{
  5. global $sum;
  6. return 'global' . $sum;
  7. };
  8. echo text().'<hr>';
  9. $sum2 = '方法2';
  10. function text2():string{
  11. return '超全局变量方法'. $GLOBALS['sum2'];
  12. };
  13. echo text2().'<hr>';
  14. $sum3 = '方法3';
  15. $text3 = function()use($sum3) {
  16. return '闭包函数用use介绍变量'.$sum3;
  17. };
  18. echo $text3().'<hr>'; //不管什么函数调用都是要'()'的
  19. $sum4 = '方法4';
  20. $text4 = fn() =>'箭头函数可以直接使用外部变量'.$sum4;
  21. echo $text4().'<hr>';
  22. $sum5 = '方法5';
  23. $text5 = function($x) {
  24. return '纯函数传参使用外部变量'.$x;
  25. };
  26. echo $text5($sum5).'<hr>'; // 纯函数传参即可
  27. function getConfig(){
  28. $a = 10;
  29. $b = 10;
  30. $c = 10;
  31. $d = $a * $b + $c;
  32. return [$d,$a];
  33. };
  34. echo print_r(getConfig()) .'<hr>';
  35. echo getConfig()[1].'<hr>';
  36. echo getConfig()[0].'<hr>';
  37. list($first,$second) = getConfig(); // 解构函数的返回的数组;
  38. echo $first.'<hr>';
  39. echo $second.'<hr>';
  40. $strtext = ' www.baidu.com ';
  41. echo $strtext.'<hr>';
  42. $strtext = trim($strtext);
  43. echo $strtext;
  44. echo substr($strtext,2,4).'<hr>'; //获取字串
  45. echo strstr($strtext,'b').'<hr>'; //获取第一次出现的字符的前半段或者后半段,true区分前后,用于获取文件名或者扩展名;
  46. echo strpos($strtext,'b').'<hr>'; // 获取某个字符首次的索引
  47. echo str_replace('baidu','qq',$strtext).'<hr>'; //替换字符串中的一段字符,并输出更新后的字符串;
  48. echo strlen($strtext).'<hr>';
  49. echo rtrim($strtext,'com').'<hr>';
  50. echo ltrim($strtext,'www').'<hr>';
  51. $strtext = '<li>'.$strtext.'</li>'.'<?php $sum6=2 ?>'.'<script>let a = 1;</script>';
  52. echo $strtext.'<hr>';
  53. echo strip_tags($strtext).'<hr>';
  54. echo str_repeat($strtext,2).'<hr>';// 复制字符串
  55. // $sum7 = 0xfff;
  56. // echo hex2bin($sum7);
  57. $strtext = 'www.baidu.com';
  58. print_r(str_split($strtext)) ; // 将字符串转变为数组
  59. echo '<hr>';
  60. echo substr_count($strtext,'w').'<hr>'; // 计算字符出现的次数
  61. echo strtoupper($strtext).'<hr>'; // 转换英文字符串大写;
  62. echo strtolower(strtoupper($strtext)).'<hr>'; // 转换英文字符串为小写;
  63. //url
  64. // print_r($_SERVER) ;
  65. echo $_SERVER['QUERY_STRING'].'<hr>';
  66. $_SERVER['QUERY_STRING'] = 'a=1&b=2&c=3';
  67. echo print_r($_SERVER['QUERY_STRING']).'<hr>' ;
  68. parse_str($_SERVER['QUERY_STRING'],$arr); // 将查询字符串转为数组
  69. printf('<pre>%s<pre>',print_r($arr,true)) ;
  70. echo '<hr>';
  71. $url = 'http://phpedu.io/0810/0810zuoye.php?a=1&b=2&c=3';
  72. $arr2 = parse_url($url); // 将url字符串地址转为数组;
  73. printf('<pre>%s</pre>',print_r($arr2,true));

实例结果

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议