博客列表 >PHP函数和字符串

PHP函数和字符串

BARRY
BARRY原创
2020年10月18日 20:48:34772浏览

PHP函数

  1. //1.自定义函数-------------------------------------------
  2. //函数的声明 计算折后价
  3. function getPrice(float $price, float $discount) : float{
  4. return $price*$discount;
  5. }
  6. //函数的调用
  7. echo getPrice(200,0.7).'<hr>';
  8. //2.系统函数,不需要声明直接调用即可---------------------------
  9. //截取字符串
  10. $str = 'hello PHP';
  11. echo mb_substr($str,0,5).'<hr>';
  12. //3.可变函数,将函数的名称放在一个变量中进行引用-----------------
  13. $funName = 'getPrice';
  14. echo $funName(100,0.5).'<hr>';
  15. //4.匿名函数-----------------------------------------------
  16. $sentence = '欢迎来到~';
  17. $welcome = function (string $city) use ($sentence):string {
  18. return $sentence.$city;
  19. };
  20. echo $welcome('上海').'!'.'<hr>';
  21. // 闭包函数
  22. $function = function ($discount) {
  23. return function (float $money, int $n) use ($discount) : float {
  24. $total = $money * $n;
  25. return ($total > 500) ? ($total * $discount) : $total;
  26. };
  27. };
  28. echo '应付金额:'.$function(0.9)(200, 5).'元<hr>';

运行结果


函数的返回值

  1. // 函数的返回值,函数只支持单值返回。
  2. //1.字符串拼接返回--------------------------------------------------------------------
  3. function price( float $unitPrice, float $number):string {
  4. $totalPrice = $unitPrice*$number; //商品原价
  5. $finalPrice = $totalPrice >=500 ? $totalPrice*0.8 : $totalPrice; //商品折后价
  6. $difference = $totalPrice-$finalPrice; //商品优惠金额
  7. return '您的商品总价为'.$totalPrice.'元,优惠金额'.$difference.'元,最终价格为'.$finalPrice.'元';
  8. }
  9. echo price(200,3);
  10. echo '<hr>';
  11. // 2. 通过数组返回多值-------------------------------------------------------------------
  12. function connect(): array {
  13. $status = 1;
  14. $message = '连接成功';
  15. return ['status'=>$status, 'message'=>$message] ;
  16. }
  17. echo implode(', ', connect()), '<hr>';
  18. //3. 通过jsons格式化字符串返回多值---------------------------------------------------------
  19. function price2( float $unitPrice, float $number):string {
  20. $totalPrice = $unitPrice*$number; //商品原价
  21. $finalPrice = $totalPrice >=500 ? $totalPrice*0.8 : $totalPrice; //商品折后价
  22. $difference = $totalPrice-$finalPrice; //商品优惠金额
  23. return json_encode(['total' => $totalPrice,'final' => $finalPrice,'diff' => $difference]);
  24. }
  25. echo price2(1000,2), '<hr>';
  26. //4. 将返回值序列化成字符串返回多个值------------------------------------------------------
  27. function connect2(): string {
  28. $status = 1;
  29. $message = '连接成功';
  30. // 将返回值序列化成字符串返回多个值
  31. return serialize(['status'=>$status, 'message'=>$message]);
  32. }
  33. $str = connect2();
  34. echo '序列化后的结果为--------:'.$str.'<br>';
  35. $arr = unserialize($str);
  36. echo '反序列化后的结果为--------:';
  37. print_r($arr);
  38. echo '<br>';
  39. print_r($arr['message']);

运行结果:


函数的参数

  1. //函数的参数
  2. //1.值参数:值传递参数
  3. function familyName($name){
  4. return '张'.$name.'。'.'<br>';
  5. }
  6. echo '老大'.'~~'.familyName('函');
  7. echo '老二'.'~~'.familyName('杰');
  8. echo '老三'.'~~'.familyName('涛');
  9. echo '<hr>';
  10. //2.引用参数------------------------
  11. function example( &$num )
  12. {
  13. $num = $num * 5;
  14. echo "在函数内:\$num = ".$num;
  15. }
  16. $num = 5;
  17. example( $num ) ;
  18. echo "<p>在函数外:\$num = $num <p>" ;
  19. echo '<hr>';
  20. //默认参数-------------------------------
  21. function person($name="张三", $age=20, $sex="男"){
  22. echo "姓名:".$name.", 年龄:".$age.", 性别:".$sex. "<br>";
  23. }
  24. person();
  25. person("老王");
  26. person("老李",22);
  27. person("阿苏",18 ,"女");
  28. echo '<hr>';
  29. //剩余参数---------------------------------
  30. function sum(...$variable){
  31. return array_sum($variable);
  32. }
  33. $arr = [1,2,3,4,5];
  34. echo sum(...$arr);

运行结果:


回调函数

  1. //内置回调函数call_user_func(),call_user_func_array()。
  2. function demo($param1,$param2)
  3. {
  4. echo '函数'.__FUNCTION__.'被执行,传入的参数是:'.$param1.' '.$param2;
  5. echo "<br/>";
  6. }
  7. //通过call_user_func调用函数demo
  8. call_user_func('demo','1','2');
  9. //通过call_user_func_array调用函数
  10. call_user_func_array('demo',array('10','20'));
  11. echo '<hr>';
  12. //回调函数-------------------------------------------------
  13. $data = range(1,20);
  14. //array_map-------------
  15. $arr = array_map(function ($item){
  16. if($item%5 ===0){
  17. return $item;
  18. }
  19. },$data);
  20. print_r($arr);
  21. echo '<hr>';
  22. //array_filter---------
  23. $arr2 = array_filter($arr);
  24. print_r($arr2);

运行结果


函数的命名空间

  1. //函数的命名空间
  2. namespace first;
  3. function getName(){
  4. return __FUNCTION__;
  5. }
  6. echo getName().'<hr>';
  7. namespace second;
  8. function getName(){
  9. return __FUNCTION__;
  10. }
  11. echo getName();

运行结果


字符串的创建方式

  1. //字符串的创建方式 字符串的长度上限2G
  2. //单引号和双引号创建变量
  3. $single_quotes = 'This is a String';
  4. $double_quotes = "This is a String";
  5. echo '单引号~'.$single_quotes.'<br>';
  6. echo '双引号~'.$double_quotes.'<br>';
  7. echo '<hr>';
  8. $var = 'String';
  9. $single_quotes_var = 'This is a $var'; // 单引号中的变量不能被解析出来。
  10. $double_quotes_var = "This is a $var"; // 双引号中的变量能被解析出来。
  11. echo '单引号~'.$single_quotes_var.'<br>';
  12. echo '双引号~'.$double_quotes_var.'<br>';
  13. echo '<hr>';
  14. echo '单引号~'.'hello \n\r word. <br>'; // 单引号的特殊字符不能被解析,原样输出
  15. echo '双引号~'."hello \n\r word. <br>"; // 双引号的特殊字符能被解析,多个空格或回车在页面视为1个
  16. echo 'This is a \'String\'. <br>'; // 单引号中又出现单引号,必须使用转义符: \
  17. echo "This is a \"demo\". <hr>";
  18. //heredoc语法创建变量,与双引号功能类似,heredoc的起始标识符 可以添加双引号。
  19. $city = 'NAN JING';
  20. echo <<< HEREDOC
  21. <p>welcome to <span style="color:red">$city</span></p>
  22. HEREDOC;
  23. // nowdoc,起始标签必须添加单引号 ,适合大段的纯文本,不适合内嵌变量或特殊字符的文本
  24. echo <<< 'NOWDOC'
  25. hello php<br>hello java<br>hello mysql
  26. NOWDOC;

运行结果

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