博客列表 >php 的变量与常量----0426

php 的变量与常量----0426

木樨
木樨原创
2021年05月20日 20:08:45518浏览

1. 变量的类型转换方式?

转换方式 函数
临时转换 (int),(string),(array),(object)…
自动转换 根据操作符对操作数的类型要求进行
强制转换 settype()
  1. //1. 临时转换
  2. $uid = 25;
  3. var_dump($uid,(string)$uid,(float)$uid);// int(25) string(2) "25" float(25)
  4. // 2. 系统自动转换
  5. // 1) "+","-" 要求参与计算的数据都是数值类型,如果不是,就是会触发自动转换
  6. $foo = '100pages';
  7. @$foo += 200;
  8. var_dump($foo);// int(300)
  9. $foo += 12.3;
  10. var_dump($foo);// float(312.3)
  11. @$res = null + '10 kg rice';
  12. var_dump($res);// int(10)
  13. // 2) . 字符串拼接符
  14. echo 'how are you' . 100 . '<br>';
  15. // 3) 布尔类型转换
  16. @var_dump($email);//null
  17. //null===>false
  18. if(!@$email)
  19. {
  20. echo 'email不存在';
  21. }
  22. /**
  23. * 以上类型转换都无法改变被转换变量本身的类型,
  24. * 而是通过转换, 将得到的新类型的数据赋给了新的变量,
  25. * 原变量的类型与值保持不变
  26. */
  27. $p = $_GET["page"];
  28. echo gettype($p);// string
  29. // 3.类型永久转换
  30. settype($p,'integer');
  31. echo gettype($p);// integer

2. 变量值传递与值引用的区别?

  • 传值赋值: 将源变量($a)的值复制出来一份新的值内存空间地址给另一个变量($b), 修改两个变量的值 互不影响
  • 引用赋值 &地址引用符: 新的变量 $price2 引用/指向了原始变量, 互相影响, 没有复制操作,因而引用赋值更加快
  1. /**
  2. * 1. 传值赋值: 将源变量($a)的值复制出来一份新的值内存空间地址给另一个变量($b), 修改两个变量的值 互不影响
  3. */
  4. $a = 45;
  5. $b = $a;
  6. printf('$a的值为%d,$b的值为%d<br>',$a,$b);// $a的值为45,$b的值为45
  7. $a = 450;
  8. printf('$a的值为%d,$b的值为%d<br>',$a,$b);// $a的值为450,$b的值为45
  9. /**
  10. * 2. 引用赋值 &地址引用符
  11. * 新的变量$price2 引用/指向了原始变量, 互相影响, 没有复制操作,因而引用赋值更加快
  12. */
  13. $price1 = 25;
  14. $price2 = &$price1;
  15. printf('$price1的值为%d,$price2的值为%d<br>',$price1,$price2);
  16. // $price1的值为25,$price2的值为25
  17. $price1 = 250;
  18. printf('$price1的值为%d,$price2的值为%d<br>',$price1,$price2);
  19. // $price1的值为250,$price2的值为250
  20. $foo = 35;
  21. $bar = &$foo;
  22. unset($foo);//仅仅是将$foo,$bar互相取消关联
  23. var_dump($bar);//int(35)

3. 变量的作用域?

  • 局部变量:定义在函数中的变量,只能在函数中访问,在函数外无法访问。
  • 全局变量:无法在函数内直接调用,需要使用关键字 global 或者 $GLOBALS超全局变量,才能在函数中访问。
  1. // 变量的作用域问题
  2. function demo(){
  3. //$a,$b 定义在函数内部, 属于局部变量, 只在函数内部访问有效
  4. $a = 100;
  5. $b = 200;
  6. echo ($a+$b);
  7. }
  8. demo();
  9. // echo $a;非法访问,在函数外部不能访问到布局变量
  10. // 全局变量 无法在函数内部直接调用
  11. $one = 100;
  12. $two = 200;
  13. function test(){
  14. // 1. global
  15. global $one,$two;
  16. echo '运算结果是: '. ($one+$two);
  17. // 2. $GLOBALS超全局变量
  18. echo '运算结果是: '. ($GLOBALS['one']+$GLOBALS['two']);
  19. }
  20. test();

4.php中魔术常量有哪些?

  • __LINE__:文件中的当前的行数。
  • __FILE__:当前文件所在的文件位置。
  • __DIR__:当前文件所在的目录。
  • __FUNCTION__:当前函数的名字。
  • __CLASS__:当前类的名字。
  • __METHOD__:类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)和FUNCTION一样。
  • __NAMESPACE__:当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议