Blogger Information
Blog 29
fans 1
comment 0
visits 14850
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP作用域与字符串常用函数
风车
Original
551 people have browsed it

作用域

1.在PHP中,不支持块作用域
2.但是支持函数作用域
3.在JS中,函数内部可以访问全局变量,但是在PHP中,不能访问

  1. $name ='老李';
  2. function getName():string
  3. {
  4. return 'hallo'. $name;
  5. };
  6. //这样会报错,因为在函数内部无法访问外部name变量

有五种方式可以让函数内部可以使用外部变量方式

1.global

  1. $name ='老李';
  2. function getName():string
  3. {
  4. global $name;
  5. };

2.$GLOBALS[‘变量名’]

  1. $name ='老李';
  2. function getName():string
  3. {
  4. return $GLOBALS['name'];
  5. };
  6. echo getName();

3.通过闭包的方式(在PHP中,匿名函数就是闭包)
语法:function () use ($变量名):string {}

  1. $fangfa = function () use ($name):string {
  2. return $name;
  3. };
  4. echo $fangfa();

4.箭头函数
注意:与JS相比,在PHP的箭头函数中,参数列表前必须有fn
语法$fangfa2 = fn() => $name;

  1. $fangfa2 = fn() => $name;
  2. echo $fangfa2();

5.纯函数:将函数依赖的外部数据,通过参数的方式注入

  1. function getName1($name):string
  2. {
  3. return $name;
  4. };
  5. echo getName1($name);

在函数外部 访问函数内部变量

1.如果外部需要函数的私有变量,可以将他作为返回数据的赠品来返回
方法就是返回一个数组,在数组中加入需要的私有变量,一起返回到函数外部

注释:在函数中有一个我们需要的私有变量,我们需要在外部调用,然后我们通过返回数组的方式,给他随便加一个数值,然后跟着我们需要的变量,组成一个数组,一起返回,然后在函数外部 我们通过 list 对返回的数组进行解构 ,就可以得到对应的参数

  1. $my = function ()
  2. {
  3. $myname = '张老师';
  4. return['这是主要返回的数据',$myname];
  5. };
  6. list ($myname,$myname2)=$my();
  7. echo $myname,$myname2;

函数私有变量和外部变量同名

1.如果产生重名,函数的内部变量会覆盖外部同名变量

常量

常量的声明方式

1.define()
2.const
define和const的区别
1.define是函数,可以用在if中,但是不能用在类中
2.const 在编译阶段处理,在作用域顶部声明,可以 用在类中,但是不能用在if中
3.常量不受作用域显示,全局有效,可以直接调用
注意:
1.常量命名所有字母大写,多个单词之间用蛇形命名法
2.常量的前面不用加 $ 符

constant():显示一个常量

用const声明的常量不支持这个函数来打印

常量分为自定义常量和预定于常量,预定义常量不用定义,可以直接调用

预定义常量中有一个特殊的子集,叫魔术常量,它的值是变化的,但是它由系统自动赋值和维护更新,我们不能修改。

字符串

字符串的两种声明方法

1.单引号
单引号声明的是纯文本,不解析变量,转义特殊符号,常用在静态文本
单引号有一个语法糖 nowdoc
语法就是 一个常量 =<<< ‘xxx’ 需要包含的内容(可以是html文档) ‘xxx’;xxx相当于文档名,前后要一致

  1. $str = <<< 'TEXT'
  2. <header>
  3. <nav>
  4. <a href="">首页</a>
  5. <a href="">视频</a>
  6. <a href="">文章</a>
  7. </nav>
  8. </header>
  9. TEXT;

2.双引号
双引号声明的是模板字符串,特点就是解析变量,转义特殊符号,使用场景就是 包含插值变量和特殊字符的动态模板
语法糖 herddoc
适用于大段的,多行的动态的文本内容,内部有变量和大量的双引号
比如html模板

  1. $tpl = <<< PHPCN
  2. <ul style="display:inline-grid;border:1px solid">
  3. <li style="color: brown">php中文网</li>
  4. <li>$domain</li>
  5. </ul>
  6. PHPCN;
  7. echo $tpl;

字符串的常用函数

1.array=>string :implod(分隔符,数组名)这里的参数就是分隔符

  1. $a =['我的','你的','他的','他们的'];
  2. echo implode(',',$a);

2.string=>array :explode(分隔符,字符串)

  1. $link = 'mysql:dbname=phpedu;root;root';
  2. $db = explode(';', $link);
  3. $tpl = 'dsn = %s<br>username = %s<br>password = %s<br>';
  4. vprintf($tpl, $db);

3.查询,替换
//substr($str, start, size): 获取数组中的对应位置的值
三个值分别是, 数组名,起始索引,结束索引(结束索引可以不要,如果不写则拿到从起始索引后所有的值)

  1. echo substr($str, 4, 2) . '<br>';

4.strstr(三个参数) :获取字符首次出现位置之后的字符串
三个参数分别是 变量名 需要获取的字符 第三个值如果不写默认为获取后面,如果为true则获取这个字符之前的
```$img = ‘banner.png’;
// 扩展名 .png
echo strstr($img, ‘.’). ‘<br>‘;
// true: 点之前的
echo strstr($img, ‘.’, true). ‘<br>‘;

  1. 5.strpos(三个参数) :首次出现的索引
  2. 三个参数分别是 变量名 ,需要查询的字符 ,查询的起始位置(如果从第一个字符开始的话就不用写)

//获取p的首次出现索引
echo strpos($str, ‘p’) .’<br>‘;
echo strpos($str, ‘p’, 1) .’<br>‘;

  1. 6.str_replace:字符串的替换
  2. **defins 重定义:将一个字符定成另一个字符 相当于是起个别名 下方就是将比较长的名字直接定义成DS**

//这里有一个路径
$class = ‘\admin\controller\User’;
// ‘\’: 目录分隔符, windows, linux,macos都不相同,用系统常量来替换
// 将本来很长的目录分隔符英文,定义成缩写DS
define(‘DS’, DIRECTORY_SEPARATOR);
//然后通过替换函数 将上方路径中的 \ 替换成DS(会自动识别系统对应的分隔符)
echo str_replace(‘\‘, DS, $class) ;

  1. 比如游戏中的敏感词替换

$bad = [‘我草’,’尼玛’, ‘弱智’];
$goods = ‘**’;
$str = ‘我草,你打尼玛的游戏呢,跟尼玛个弱智一样’;
echo str_replace($bad, $goods, $str) . “<hr>“;

  1. ![](https://img.php.cn/upload/image/298/155/595/1660486234572400.png)
  2. 7.删除指定字符
  3. strlen:获取当前字符串长度
  4. trim(变量名):删除前后空格
  5. rtrim(变量名):从右往左删
  6. ltrim(变量名):从左往右删
  7. strip_tags:过滤html标签

$str = ‘ php.cn ‘;
echo strlen($str) . ‘<br>‘;
echo strlen(trim($str)) . ‘<br>‘;
$str = trim($str);
echo rtrim($str, ‘.cn’) . ‘<br>‘;
echo ltrim($str, ‘php.’) . ‘<br>‘;
echo strip_tags(‘<h1>php.cn</h1><?php echo \’Hello\’ ?>’);

  1. 8.字符串大小写转换
  2. strtoupper :将字符串转换成大写
  3. strtolower :将字符串转换成小写

echo strtoupper(“hello WORLD.”);
echo strtolower(“hell WORLD.”);

  1. 9.str_shuffle :随机打乱当前字符串

echo str_shuffle(“abcdefghijklmn”);

  1. 10.str_pad :将字符串填充到指定的长度
  2. 有三个参数:变量名 填充目标值 填充内容(用什么来填充)

$str = “Hello World”;
echo str_pad($str,30,”.”);

  1. 11.bin2hex :将字符串变成16进制

$str = bin2hex(“变成16进制”);
echo($str);
```

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