Blogger Information
Blog 9
fans 0
comment 0
visits 7629
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP 变量过滤器、函数
金牌马甲
Original
884 people have browsed it

变量过滤器的常用函数与用法

1.过滤单个变量:

  1. filter_var();
代码展示:
  1. <?php
  2. $age = 30;
  3. $options = ['options'=>['min_range'=>18,'max_range'=>60]];
  4. var_dump(filter_var($age,FILTER_VALIDATE_INT,$options));
  5. echo '<br>';
  6. $email = '123@php';
  7. var_dump(filter_var($email,FILTER_VALIDATE_EMAIL));
  8. ?>
运行结果:
  1. int(30)
  2. bool(false)

2.过滤多个变量:

  1. filter_var_array();
代码展示:
  1. <?php
  2. $a = 'ABC';
  3. $b = '123';
  4. $c = true;
  5. $d = 123;
  6. var_dump(filter_var_array([$a,$b,$c,$d],FILTER_VALIDATE_BOOLEAN));
  7. ?>
运行结果:
  1. array(4) {
  2. [0]=>
  3. bool(false)
  4. [1]=>
  5. bool(false)
  6. [2]=>
  7. bool(true)
  8. [3]=>
  9. bool(false)
  10. }

3.过滤外部变量

  1. filter_input();
代码展示:
  1. <?php
  2. echo 'id= ' . $_GET['id'];
  3. echo '<br>';
  4. $options = ['options'=>['min_range'=>1]];
  5. var_dump(filter_input(INPUT_GET,'id',FILTER_VALIDATE_INT,$options));
  6. ?>
运行结果:
  1. id= 998
  2. int(998)

4.验证多个外部变量

  1. filter_input_array();
代码展示:
  1. <?php
  2. $args = [
  3. 'id'=>FILTER_VALIDATE_INT,
  4. 'username'=>FILTER_SANITIZE_STRING,
  5. 'email'=>FILTER_VALIDATE_EMAIL,
  6. 'blog'=>FILTER_VALIDATE_URL,
  7. ];
  8. var_dump(filter_input_array(INPUT_GET,$args));
  9. ?>
运行结果:
  1. array(4) {
  2. ["id"]=>
  3. int(998)
  4. ["username"]=>
  5. string(2) "GW"
  6. ["email"]=>
  7. bool(false)
  8. ["blog"]=>
  9. bool(false)
  10. }

函数

1.函数类型

1.1系统函数/内置函数(直接调用):
  1. mb_substr();
代码展示:
  1. <?php
  2. $str = '本文实例为大家分享了几个常用的php短信接口代码';
  3. mb_substr($str,2,7);
  4. echo mb_substr($str,2,7);
  5. ?>
运行结果:
  1. 实例为大家分享
1.2自定义函数:
代码展示:
  1. <?php
  2. function getPrice(float $price, float $discount) : float {
  3. return $price * $discount;
  4. };
  5. echo '折后价格:'. getPrice(100, 0.8). '元';
  6. ?>
运行结果:
  1. 折后价格:80
1.3可变函数(将函数名称放在一个变量中进行引用):
代码展示:
  1. <?php
  2. function getPrice(float $money, float $discount) : float{
  3. return $money * $discount;
  4. }
  5. $funcname = 'getPrice';
  6. echo '折后价格:'. $funcname(110, 0.8). '元';
  7. ?>
运行结果:
  1. 折后价格:88
1.4匿名函数:
代码展示:
  1. <?php
  2. $getPrice = function(float $money, float $discount) : float{
  3. return $money * $discount;
  4. };
  5. echo '折后价格:'. $getPrice(100, 0.8). '元';
  6. ?>
运行结果:
  1. 折后价格:80
1.4.1匿名函数在PHP中又称为“闭包”,可以访问上一级空间的成员:
代码展示:
  1. <?php
  2. $discount = 0.8;
  3. $getPrice = function(float $money) use($discount) : float{
  4. return $money * $discount;
  5. };
  6. echo '折后价格:'. $getPrice(100). '元';
  7. ?>
运行结果:
  1. 折后价格:80
1.4.2“闭包”更多用于子函数:
代码展示:
  1. <?php
  2. $f = function($discount){
  3. $p = function(float $money, int $n) use($discount) : float{
  4. $total = $money * $n;
  5. return($total > 200) ? ($total * $discount) : $total;
  6. };
  7. return $p;
  8. };
  9. $p = $f(0.8);
  10. echo '折后价格:'. $p(100, 3). '元';
  11. ?>
运行结果:
  1. 折后价格:240
关于“闭包”
闭包是匿名函数最常用的应用场景之一
闭包是一个子函数,全局不可见,但父函数可见
闭包全局无法调用,可以当成父函数的返回值,返回到全局,可以将函数中的内容带给全局使用
函数一旦调用完成,内部将全部释放掉,外部不能访问,外部不能访问函数中的私有成员
函数中的私有成员,可以通过它的子函数(闭包)返回到全局供其使用

2.函数的返回值方式:

2.1字符串拼接返回:
代码展示:
  1. <?php
  2. function demo() : string
  3. {
  4. $num = 3;
  5. $status = 'success';
  6. return $num. '.'. $status;
  7. }
  8. echo demo();
  9. ?>
运行结果:
  1. 3.success
2.2数组返回多值:
代码展示:
  1. <?php
  2. function demo() : array
  3. {
  4. $a = 1;
  5. $b = 2;
  6. $c = 3;
  7. $d = 4;
  8. $e = 5;
  9. $f = '上山打老虎';
  10. return [$a, $b, $c, $d, $e, $f];
  11. }
  12. echo implode(',', demo());
  13. ?>
运行结果:
  1. 1,2,3,4,5,上山打老虎
2.3将返回值序列化成字符串返回多值:
代码展示:
  1. <?php
  2. function demo() : string
  3. {
  4. $num = 1;
  5. $message = 'success';
  6. return serialize(['num'=> $num, 'message'=> $message]);
  7. }
  8. echo demo();
  9. echo '<br>';
  10. $arr = unserialize(demo());
  11. print_r($arr);
  12. echo '<br>';
  13. print_r($arr['num']);
  14. ?>
运行结果:
  1. a:2:{s:3:"num";i:1;s:7:"message";s:7:"success";}
  2. Array ( [num] => 1 [message] => success )
  3. 1

3.函数的参数:

3.1值参数:值传递参数,默认方式:
代码展示:
  1. <?php
  2. function getPrice(float $money) : float{
  3. // 在函数中对参数的改变并不会映射到外部的参数
  4. return $money = $money * 2;
  5. }
  6. $var = 1000;
  7. echo getPrice($var);
  8. echo '<br>';
  9. echo $var;
  10. ?>
运行结果:
  1. 2000
  2. 1000
3.2引用参数(在参数前添加取地址符:&):
  1. <?php
  2. function getPrice(float &$money) : float{
  3. // 在函数中对参数的改变会影响到外部的参数
  4. return $money = $money * 2;
  5. }
  6. $var = 1000;
  7. echo getPrice($var);
  8. echo '<br>';
  9. echo $var;
  10. ?>
运行结果:
  1. 2000
  2. 2000
3.3默认函数
  1. <?php
  2. function getPrice(float $a, float $b,string $opt = '+') : string
  3. {
  4. switch($opt) {
  5. case '+';
  6. return sprintf('%d + %d = %d', $a, $b, ($a + $b));
  7. break;
  8. case '-';
  9. return sprintf('%d - %d = %d', $a, $b, ($a - $b));
  10. break;
  11. case '*';
  12. return sprintf('%d * %d = %d', $a, $b, ($a * $b));
  13. break;
  14. case '/';
  15. return sprintf('%d / %d = %d', $a, $b, ($a / $b));
  16. break;
  17. case '/';
  18. if($b !== 0)
  19. return sprintf('%d / %d = %d', $a, $b, ($a / $b));
  20. else die('除数不能为0');
  21. break;
  22. default:
  23. die('非法操作符');
  24. }
  25. }
  26. echo getPrice(10, 5, '+'),'<br>';
  27. echo getPrice(10, 5, '-'),'<br>';
  28. echo getPrice(10, 5, '*'),'<br>';
  29. echo getPrice(10, 5, '/'),'<br>';
  30. echo getPrice(10, 5, '.'),'<br>';
  31. ?>
运行结果:
  1. 10 + 5 = 15
  2. 10 - 5 = 5
  3. 10 * 5 = 50
  4. 10 / 5 = 2
  5. 非法操作符
3.4剩余参数:
3.4.1剩余参数:
代码展示:
  1. <?php
  2. function getPrice()
  3. {
  4. return array_sum(func_get_args());
  5. }
  6. echo getPrice(5,6,7,8,9);
  7. ?>
运行结果:
  1. 35
3.4.2…rest剩余参数:
代码展示:
  1. <?php
  2. //...args:将所有传给参数的所有参数全部压到一个数组中
  3. function getPrice(...$args)
  4. {
  5. return array_sum($args);
  6. }
  7. echo getPrice(5,6,7,8,9);
  8. ?>
运行结果:
  1. 35
3.4.3…rest, …spread混合使用:
代码展示:
  1. <?php
  2. function getPrice(...$args)
  3. {
  4. return array_sum($args);
  5. }
  6. $data = [5,6,7,8,9];
  7. echo getPrice(...$data);
  8. ?>
运行结果:
  1. 35

4.函数的回调执行方式:

  1. 回调函数是异步执行的重要方式
代码展示:
  1. <?php
  2. function demo($a, $b, $c) : string
  3. {
  4. return $a+ $b+ $c;
  5. }
  6. echo call_user_func('demo',1, 2, 3);
  7. echo '<br>';
  8. echo call_user_func_array('demo',[1,2,3]);
  9. ?>
运行结果:
  1. 6
  2. 6

5.函数的命名空间:

  1. php中不允许在同一个命名空间中重复声明同名函数的
代码展示:
  1. <?php
  2. namespace db1;
  3. function demo()
  4. {
  5. return __FUNCTION__;
  6. }
  7. echo demo();
  8. echo '<br>';
  9. namespace db2;
  10. function demo()
  11. {
  12. return __FUNCTION__;
  13. }
  14. echo demo();
  15. echo '<br>';
  16. //调用另一个空间的函数
  17. echo \db1\demo();
  18. ?>
运行结果:
  1. db1\demo
  2. db2\demo
  3. db1\demo

6.字符串的四种创建方式与应用场景:

6.1单引号
  1. 单引号的意义:本身就是字符;字符串的定界符
  2. 单引号中变量不会被解析
  3. 通过变量与字符串的拼接来输出
  4. 单引号中的特殊字符同样不能被解析
  5. 单引号中出现单引号,必须使用转义符
  6. 单引号中出现转义符,必须连写2个才能正常输出,否则还是转义
代码展示:
  1. <?php
  2. $a = 'hello';
  3. echo '$a,world';
  4. echo '<br>';
  5. echo $a. ',world';
  6. echo '<br>';
  7. echo 'hello,/r/n world';
  8. echo '<br>';
  9. echo $a. ',world,\'hello\'';
  10. echo '<br>';
  11. echo $a. ',\\world';
  12. ?>
运行结果:
  1. $a,world
  2. hello,world
  3. hello,/r/n world
  4. hello,world,'hello'
  5. hello,\world
6.2双引号
  1. 双引号中的变量可以被解析
  2. 双引号中的特殊字符可以被解析
  3. 同页面中的多个空格或回车视为一个
代码展示:
  1. <?php
  2. $a = 'hello';
  3. echo "$a,world";
  4. echo '<br>';
  5. echo "$a,\r\n world";
  6. ?>
运行结果:
  1. hello,world
  2. hello, world
6.3nowdoc
  1. 单引号的PLUS+
  2. 适合纯文本
  3. 不适合嵌入变量或特殊字符
代码展示:
  1. <?php
  2. echo <<<'abc'
  3. This is a test.<br>
  4. abc;
  5. ?>
运行结果:
  1. This is a test.
6.4heredoc
  1. 双引号的PLUS+
  2. 可解析变量
  3. 其中双引号不需要转义
  4. 适合PHP+html编写模版
#代码展示:
  1. <?php
  2. $a = 'hello';
  3. echo <<<ABC
  4. <p>$a,<span style="font-style: italic">world.</span></p>
  5. ABC;
  6. ?>
#运行结果:

Correcting teacher:天蓬老师天蓬老师

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