Blogger Information
Blog 25
fans 1
comment 0
visits 12961
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP作用域,常量分类,字符串常用函数
xueblog9的进阶之旅
Original
561 people have browsed it

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));

实例结果

Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post