博客列表 >php常量和变量

php常量和变量

阿心
阿心原创
2020年04月19日 19:22:15409浏览

变量作用域

  1. <?php
  2. //超全局变量不需要定义/初始化。$GLOBALS $名称;
  3. $siteName="这是一个名称";
  4. // 全局变量会自动注册也为超全局变量数组$GlOBALS的一个值
  5. // 超全局变量不受作用域限制
  6. print_r ($GLOBALS['$siteName']);
  7. //声明函数,创建作用域
  8. function getInfo(){
  9. //定义函数为私有变量:$private
  10. //使用超全局变量
  11. $private=$GLOBALS['$siteName'];
  12. //函数直接访问超全局变量
  13. echo $_SERVER['SCRIPT_NAME'];
  14. //返回
  15. return $private;
  16. }
  17. getInfo();
  18. echo "<hr>";
  19. // 直接输入
  20. echo $_SERVER['SCRIPT_NAME'];
  21. echo "<hr>";

静态变量和动态变量区别

  1. <?php
  2. //1.动态变量:也叫私有变量
  3. //namespace表示命名空间
  4. //同一个文件允许有多个命名空间,但是不允许有同一个函数
  5. namespace ns1;
  6. function test():float
  7. {
  8. //在动态变量中,每次使用都会初始化。
  9. $sum=0 ;
  10. $sum = $sum + 1;
  11. return $sum;
  12. }
  13. //所以输出不管多少次结果,都是初始化的那个结果就是$sum+1的结果”1“,
  14. echo test()."<br>";
  15. echo test()."<br>";
  16. echo test()."<br>";
  17. echo "<hr>";
  18. #全局变量
  19. namespace bb;
  20. $sum=0;
  21. function test():float
  22. {
  23. global $sum;
  24. $sum=$sum+1;
  25. return $sum;
  26. }
  27. echo test()."<br>";
  28. echo test()."<br>";
  29. echo test()."<br>";
  30. echo "<hr>";
  31. //局部变量:只在函数被调用才初始化,更新一次就不更新了
  32. //静态变量:可理解为“伪全局变量”
  33. //实现函数多次调用共享数据
  34. namespace cc;
  35. function test():float{
  36. static $sum;
  37. $sum=$sum+1;
  38. return $sum;
  39. }
  40. echo test()."<br>";
  41. echo test()."<br>";
  42. echo test()."<br>";
  43. echo "<hr>";
  44. //变量本质:数据共享
  45. //函数本质:代码共享
  46. $num=50;
  47. echo ($num+1)."<br>";
  48. echo $num+2;

变量过滤器

  1. <?php
  2. //filter_list返回包含所有得到支持的过滤器的一个数组
  3. //$filter过滤器
  4. foreach (filter_list() as $filter){
  5. //该函数的结果不是过滤器 ID,而是过滤器名称。请使用 filter_id() 函数来获取过滤器 ID。
  6. echo $filter.'=>'.filter_id($filter)."<br>";
  7. }
  8. echo '<hr>';
  9. //打印出过滤器名称(不包含ID)
  10. print_r(filter_list());
  11. echo '<hr>';
  12. //过滤单个变量使用filter_var;
  13. $age=60;
  14. if(filter_var($age,FILTER_VALIDATE_INT)):
  15. echo "是个整数";
  16. endif;
  17. echo '<hr>';
  18. //限制范围
  19. if(filter_var($age,FILTER_VALIDATE_INT,['options'=>['min_range'=>10,'max_range'=>50]])):
  20. echo $age;
  21. else:
  22. echo "输入有误";
  23. endif;
  24. echo '<hr>';
  25. $email='123@qq.com';
  26. var_dump(filter_var($email,FILTER_VALIDATE_EMAIL));
  27. echo '<hr>';
  28. var_dump(filter_var($email,247));
  29. echo '<hr>';
  30. //过滤多个变量filter_var_array()
  31. var_dump(filter_var_array([100,'php',FILTER_VALIDATE_INT]));
  32. echo '<hr>';
  33. //检测是否存在外部变量filter_has_var()
  34. //如URL的$_GET提交参数:123.com/index.php?id=1&name=admin
  35. //提交参数方式:INPUT_GET,INPUT_POST,INPUT_COOKIE,INPUT_SEVER,INPUT_ENV
  36. //示例:127.0.0.1/index.php?p=1
  37. var_dump(filter_has_var(INPUT_GET,'page'));
  38. echo 'get变量='.$_GET['P'];
  39. echo '<hr>';
  40. //过滤外部变量filter_input。进行限制=>1
  41. var_dump(filter_input(INPUT_GET,'P',FILTER_VALIDATE_INT,['options'=>['min_range'=>1]]));
  42. echo '<hr>';
  43. //验证多个外部变量filter_input_array()
  44. $args = [
  45. 'username'=> FILTER_SANITIZE_STRING,
  46. 'username'=> FILTER_SANITIZE_STRING,
  47. 'email'=> FILTER_VALIDATE_EMAIL,
  48. 'age'=> ['filter'=> FILTER_VALIDATE_INT,'flags'=> FILTER_REQUIRE_SCALAR,'options'=> ['min_range'=>10]],
  49. 'blog'=>FILTER_VALIDATE_URL,
  50. ];
  51. var_dump(filter_input_array(INPUT_GET,$args));

常量不需要更新数据

  1. <?php
  2. //打印出当前系统有哪些常量
  3. //print_r(get_defined_constants());
  4. //可以分组查看
  5. //print_r(get_defined_constants(true));
  6. define('APP_PATH',__DIR__.'/app/admin/');
  7. echo APP_PATH;
  8. print_r(get_defined_constants(true)['user']);

定义常量 。 常量请使用””或者’’包起来。

  1. <?php
  2. //define()函数
  3. define('LECTRUE','老张');
  4. const COURES='php';
  5. //常量不受作用域限制
  6. function test(){
  7. echo LECTRUE."教我们学".COURES."<br>";
  8. define('SEX','男性');
  9. echo SEX;
  10. }
  11. test();
  12. echo "<hr>";
  13. //在流程控制中,difine可以用。const不能用
  14. if(true){
  15. define('EMAIL','123QQ.COM');
  16. }
  17. echo EMAIL;
  18. echo "<hr>";
  19. //const在类中,创建类常量。
  20. class demo{
  21. const TITLE="php中文网";
  22. //define不可以在类使用
  23. //define('A',100);
  24. }
  25. echo demo::TITLE;
  26. //echo demo::A;
  27. //常量通常只允许用标量进行初始化
  28. //标量:单值变量,字符串,数值,布尔,NULL
  29. //PHP7.0+支持数组初始化常量
  30. const DB_LINKS=[
  31. 'host'=>'localhost',
  32. 'name'=>'root',
  33. 'password'=>'root',
  34. 'db'=>'test',
  35. 'charset'=>'utf8',
  36. ];
  37. echo '<pre>'.print_r(DB_LINKS,true).'</pre>';
  38. //返回一个常量的值使用constant()
  39. echo constant("LECTRUE");
  40. echo LECTRUE."<BR>";
  41. $mail2='EMAIL';
  42. echo constant($mail2);
  43. echo "<br>";
  44. define('','我是个空常量');
  45. echo '';
  46. //constant可以输出空值常量
  47. echo constant('');
  48. define('A','定义常量我才能显示');
  49. echo A;

魔术常量

  1. <?php
  2. echo '当前代码的行号是:'.__LINE__."<BR>";
  3. echo '当前文件的绝对路径和文件名称是:'.__FILE__.'<BR>';
  4. echo '当前文件所在目录是:'.__DIR__."<br>";
  5. echo '当前文件目录和文件'.__DIR__.'/demo6.php';
  6. echo '<hr>';
  7. //使用魔术常量显示当前函数名称
  8. function test(){
  9. echo __FUNCTION__;
  10. }
  11. test();
  12. echo '<hr>';
  13. class D{
  14. public function index(){
  15. echo __METHOD__;
  16. }
  17. }
  18. (new D)->index();

总结:初学者一定要多注意符号不要写出了,即使是对照的抄,一不小心也会出错。只要多多写下代码,我相信也一定可以学到的。在学习过程中,也除了抄,还可以尽量的去尝试下其他方式方法!

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