博客列表 >PHP基础:变量与常量

PHP基础:变量与常量

暴宇
暴宇原创
2020年05月18日 20:01:49561浏览
  1. <?php
  2. // # PHP基础:变量与常量
  3. // ## 1.屏幕打印输出类命令
  4. // ## 2.变量的命名规则
  5. // ## 3.变量的值传递与引用传递
  6. // ## 4.变量的检测与删除
  7. // ## 5.变量的数据类型
  8. // ## 6.变量的作用域
  9. // ## 7.静态变量
  10. // ## 8.变量过滤器
  11. // ## 9.常量
  12. // 1.php打印输出类:echo | print | var_dump() | var_export()
  13. // 1.1 echo,直接输出,没有返回值
  14. $myname='Mr.Bao';
  15. echo $myname;
  16. echo '<hr>';
  17. // 1.2 print,不仅输出而且还有返回值,如果执行成功返回1
  18. echo print $myname;
  19. echo '<hr>';
  20. // 1.3 var_dump(),内置函数,既打印输出数组及对象的键值对还输出值类型
  21. $arr=['baoyu','33','man','php'];
  22. $obj=(object)['name'=>'baoyu','age'=>'33','sex'=>'man','study'=>'php'];
  23. var_dump($arr);
  24. echo '<hr>';
  25. var_dump($obj);
  26. // 1.4 var_export(),内置函数,仅打印输出数组及对象的键值对
  27. echo '<hr>';
  28. var_export($arr);
  29. echo '<hr>';
  30. var_export($obj);
  31. echo '<hr>';
  32. //////////////////////////////////////////////
  33. // 2.变量命名规则:变量命名区分大小写,变量必须使用$作为起始符号,不允许用数字开头,不允许使用特殊字符,如@#%!&……*()等
  34. // 2.1 变量名仅能用以下三种字符组成:大小写英文字母,下划线,数字(不能在开头)
  35. // 2.2 变量名应有意义,便于阅读及后期的维护
  36. $myname='纯小写字母的变量名;';
  37. $MyName='大小写字母混用的变量名,更易读;';
  38. $MyName123='大小写字母加数字的变量名;';
  39. $My_Name='大小写字母+下划线的变量名;';
  40. $My_Name_123='大小写字母+下划线+数字的变量名';
  41. echo $myname,$MyName,$MyName123,$My_Name,$My_Name_123;
  42. // 2.3php变量是弱类型,可随时修改变量的值和类型
  43. echo '<hr>';
  44. $var=10;
  45. var_dump($var);
  46. echo '<hr>';
  47. $var='Hello!';
  48. var_dump($var);
  49. echo '<hr>';
  50. $var=['Hello!',100,true];
  51. var_dump($var);
  52. echo '<hr>';
  53. $var=(object)['Hello!',100,true];
  54. var_dump($var);
  55. echo '<hr>';
  56. //////////////////////////////////////////////
  57. // 3.变量的值传递与引用传递
  58. // 3.1 值传递:仅将变量的值赋给另一个变量
  59. $one=10;
  60. $two=$one;
  61. echo $one,'-----',$two,'<br>';
  62. $one=20;
  63. echo $one,'-----',$two,'<br>';
  64. // 3.2 引用传递:另一个变量引用此变量的值,此变量的值更新后,另一个变量也随之更新,也可理解为给此变量起了个别名
  65. $one=10;
  66. $two=&$one;
  67. echo $one,'-----',$two,'<br>';
  68. $one=20;
  69. echo $one,'-----',$two,'<hr>';
  70. // 3.3 可变变量:变量的标识符/变量名可动态改变,变量名可以来自另一个变量的值
  71. $one='two';
  72. $$one='three';
  73. echo $one,'----',$two,'<hr>';
  74. //////////////////////////////////////////////
  75. // 4.变量的检测与删除
  76. // 4.1 用if+isset检测变量是否存在
  77. if (isset($username)) :
  78. echo $username, '<br>';
  79. else:
  80. echo '变量不存在<br>';
  81. endif;
  82. // 4.2 用unset删除变量/销毁变量
  83. $username='Mr.Bao';
  84. unset($username);
  85. if (isset($username)) :
  86. echo $username, '<br>';
  87. else:
  88. echo '变量不存在<hr>';
  89. endif;
  90. // 4.3 变量已定义而未初始化,默认用NULL进行赋值
  91. // 初始化:即第一次赋值
  92. // 更新/修改: 即第二次赋值或第N次赋值
  93. $username;
  94. // 4.4 用is_null()可判断变量是否为null
  95. var_dump(is_null($username));
  96. $username='';
  97. var_dump(is_null($username));
  98. // 4.5 用empty()可判断变量是否为空
  99. var_dump(empty($username));
  100. echo '<hr>';
  101. //////////////////////////////////////////////
  102. // 5.变量的数据类型
  103. // 5.1 基本类型:字符串型、数值型、布尔型
  104. $var='我是字符串string类型';
  105. $int=1000;
  106. $buer=true;
  107. echo '字符串类型:',$var,'<br>数值型:',$int,'<br>布尔类型:',$buer,'<hr>';
  108. // 5.2 复合类型:对象、数组、特殊类型
  109. $obj=(object)['name'=>'Mr.Bao'];//对象类型
  110. $arr=['name',30,'man'];//数组类型
  111. $num=null;//unll类型
  112. $f=fopen('text.txt','r');//读取文件类型
  113. //////////////////////////////////////////////
  114. // 6.变量作用域:函数作用域、全局作用域
  115. // 6.1 根据作用域的不同,可分为:
  116. // (1)私有变量:函数中定义的变量,仅在函数中使用
  117. function fun()
  118. {
  119. $var='函数内的变量,仅在函数内使用';
  120. echo $var,'<br>';
  121. }
  122. fun();
  123. // (2)全局变量:函数之外定义的变量,仅在函数外使用
  124. $var='全局变量,在函数外使用';
  125. echo $var,'<br>';
  126. // (3)超全局变量:也叫预定义变量,不受作用域限制,也不需要声明,在任何地方直接使用即可
  127. echo $GLOBALS['var'],'<hr>';
  128. //////////////////////////////////////////////
  129. // 7.静态变量
  130. // 7.1 静态变量使用“static”前缀+“$”+“变量名”的方式定义
  131. // 7.2 静态变量的特点是多次调用时可将每次调用的结果保存至下一次调用时使用
  132. function fun1(){
  133. static $sum=0;
  134. $sum=$sum+1;
  135. return $sum;
  136. }
  137. echo fun1(),'<br>';
  138. echo fun1(),'<br>';
  139. echo fun1(),'<hr>';
  140. // 总结:变量的本质是数据共享,函数的本质是代码共享
  141. //////////////////////////////////////////////
  142. // 8.变量过滤器:filter_var(),filter_var_array(),filter_has_var(),filter_input(),filter_input_array()
  143. // 8.1 过滤单个变量filter_var()
  144. $age=40;
  145. var_dump(filter_var($age,FILTER_VALIDATE_INT,['options'=>['min_range'=>18,'max_range'=>35]]));
  146. echo '<br>';
  147. $email='mrbao@php.cn';
  148. var_dump(filter_var($email,FILTER_VALIDATE_EMAIL));
  149. echo '<hr>';
  150. // 8.2 过滤数组filter_var_array()
  151. $arr=[100,'name','age',30];
  152. var_dump(filter_var_array($arr, FILTER_VALIDATE_INT));
  153. echo '<hr>';
  154. // 8.3 检测是否存在指定的外部变量, filter_has_var()
  155. // 如url地址中?后面的键值对
  156. // 检测方式有:INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV
  157. var_dump(filter_has_var(INPUT_GET,'id'));//GET发送的值
  158. var_dump(filter_has_var(INPUT_POST,'id'));//POST发送的值
  159. var_dump(filter_has_var(INPUT_COOKIE,'id'));//COOKIE的值
  160. var_dump(filter_has_var(INPUT_SERVER,'id'));//SERVER的值
  161. var_dump(filter_has_var(INPUT_ENV,'id'));//ENV的值
  162. echo '<hr>';
  163. // 8.4 访问外部变量的过滤器,filter_input
  164. var_dump(filter_input(INPUT_GET, 'p',FILTER_VALIDATE_INT, ['options'=>['min_range'=>1]]));
  165. echo filter_input(INPUT_GET, 'p',FILTER_VALIDATE_INT, ['options'=>['min_range'=>1]]) ? '页码OK': '页码非法';
  166. // 8.5 同时验证多个外部变量: filter_input_array()
  167. $args = [
  168. 'username' => FILTER_SANITIZE_STRING,
  169. 'email' => FILTER_VALIDATE_EMAIL,
  170. 'age' => ['filter' => FILTER_VALIDATE_INT, 'flags'=>FILTER_REQUIRE_SCALAR, 'options' => ['min_range' => 18]],
  171. 'blog' => FILTER_VALIDATE_URL,
  172. ];
  173. var_dump(filter_input_array(INPUT_GET, $args));
  174. echo '<hr>';
  175. // 标量:单值变量,字符串,布尔,数值
  176. // 复合:对象,数组
  177. //////////////////////////////////////////////
  178. // 9.常量
  179. // 9.1 常量是代码中不需要更新的数据,有系统自带的常量和自定义的常量
  180. // (1)查看系统自带的常量
  181. print_r(get_defined_constants());//不分组查看
  182. echo '<hr>';
  183. print_r(get_defined_constants(true));//分组查看
  184. echo '<hr>';
  185. // (2)自定义常量,define()函数,const关键字
  186. define('MYNAME', 'BAOYU');
  187. const AGE=30;
  188. echo 'My name is ',MYNAME,' my age is ',AGE,'<br>';
  189. // 常量不受作用域限制,可在函数内直接调用
  190. // 从函数中声明的常量需调用函数后才可访问到,函数中不可用const关键字声明
  191. function myfun1(){
  192. echo 'My name is ',MYNAME,' my age is ',AGE,'<br>';
  193. define('SEX', 'Man');
  194. }
  195. myfun1();
  196. echo 'My name is ',MYNAME,' my sex is ',SEX,'<br>';
  197. // 流程控制中,define能用, const不能用
  198. if (true) {
  199. define('EMAIL', 'baoyu@php.cn');
  200. }
  201. echo EMAIL,'<br>';
  202. // const用在类中,创建类常量,define不能用在类中
  203. class Demo
  204. {
  205. const HELLO = 'php.cn';
  206. }
  207. echo Demo::HELLO.'<br>';
  208. // 常量通常只允许用标量进行初始化
  209. // 标量: 单值变量, 字符串, 数值,布尔, null
  210. // php7.0+支持数组初始化常量
  211. const DB_LINKS = [
  212. 'host'=>'localhost',
  213. 'username'=>'root',
  214. 'password'=>'root',
  215. 'charset'=>'utf8',
  216. ];
  217. echo '<pre>'.print_r(DB_LINKS,true).'</pre>';
  218. // constant()返回常量的值,可返回由变量或函数保存的常量名的值
  219. echo constant('MYNAME'). '<br>';
  220. echo MYNAME. '<br>';
  221. $constantName = 'EMAIL';
  222. echo constant($constantName);
  223. echo '<hr>';
  224. // 空值也可作为常量名
  225. define('USER_NAME', '其实我也是一个常量');
  226. define('', '其实我也是一个常量');
  227. echo '';
  228. echo constant('');
  229. // (3)查看自定义常量,类常量不能用下面的方法查看到
  230. print_r(get_defined_constants(true)['user']);
  231. echo '<hr>';
  232. // 9.2 魔术常量
  233. echo '当前行号: ' . __LINE__ . '<br>';
  234. echo '当前文件: ' . __FILE__ . '<br>';
  235. echo '当前目录: ' . __DIR__ . '<br>';
  236. function hello123()
  237. {
  238. echo '当前函数名:',__FUNCTION__;
  239. }
  240. hello123();
  241. echo '<hr>';
  242. class D
  243. {
  244. public function index()
  245. {
  246. echo '当前类方法名:',__METHOD__;
  247. }
  248. }
  249. (new D)->index();
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议