Blogger Information
Blog 62
fans 2
comment 1
visits 42277
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP-01 PHP中的变量(200702)
老黑
Original
612 people have browsed it

主要内容

  1. 基本PHP程序结构(函数(代码)-执行)
  2. 变量命名、检测、删除
  3. 变量的数据类型及类型转化
  4. 变量值的传递

1、PHP程序的基本结构

如之前说的,程序的基本结构是:数据(变量)-代码(函数)-执行(返回结果)。
示例:

  1. // 代码
  2. function sum(int $a, int $b), int($c) {
  3. // 返回结果给调用者
  4. return "{$a}、{$b}、{$c}三者之和是:" . ($a + $b);
  5. }
  6. // 执行,将执行结果打印输出
  7. echo sum(10, 20, 110);
  • 返回(php打印输出):echo-print-var_dump
    三者的区别示例
  1. // echo 回显,效率最高。但没有返回值
  2. $email = 'admin@abc.com';
  3. echo $email, '<br>';
  4. echo '<span style="color:red">'.$email.'</span>';
  5. echo '<hr>';
  6. // print与echo 区别
  7. // 1. echo 可以打印多个变量,且没有返回值
  8. // 2. print 仅能打印单个变量, 返回1
  9. echo print $email;
  10. echo '<hr>';
  11. echo gettype($email), '<br>';
  12. // var_dump()想获取到变量的完整的信息
  13. var_dump($email);
  14. var_dump(123);
  15. echo '<hr>';
  16. // var_export(): 返回一个变量的字符串表示(源代码)
  17. var_export($email);

2. 变量命名、检测、删除

  • 变量命名
    变量是临时存储数据的容器

变量是实现数据复用的手段

  1. <?php
  2. $username = 'admin';
  3. $userName = 'Tom';
  4. // ① 变量区分大小写
  5. echo $username,'<br>', $userName, '<hr>';
  6. // 函数是不区分大小写
  7. echo strtoupper($userName);
  8. echo STRTOUPPER($userName);
  9. // ② 变量名必须以"$"开始
  10. // hello = 'php';
  11. // 变量标识符不允许用数字开始
  12. // $123aaa = '张三';
  13. // 变量允许使用下划线开始
  14. $_email = 'abc@qq.com';
  15. // ③ 变量名不允许使用特殊字符,@
  16. // $user@id = 'abc';
  17. // ④ 变量标识符: $开始,仅允许字母,下划线和数字,且不允许使用数字开始
  18. $我的邮箱 = 'Tom@abc.com';
  19. // 中文可以用作变量名,但不推荐
  20. echo $我的邮箱;
  21. // 无意义, 不要用,变量名要望文生义
  22. $aaa = 'abc.com';
  23. $_ = 123;
  • 变量检测与删除
  1. // 打开所有的报错
  2. error_reporting(E_ALL);
  3. // echo $username;
  4. // 变量检测
  5. $username = '王大牛';
  6. $username = null;
  7. // isset():如果该变量存在且值不为null才是true
  8. if (isset($username)) echo $username. '<br>';
  9. else echo '没有定义该变量'.'<hr>';
  10. // unset():删除变量, 没有返回值
  11. // unset($username);
  12. // echo $username;
  13. $var = '';
  14. if (empty($var)) var_dump($var). '<br>';

3. 变量的数据类型及类型转化

(1)数据类型

  1. // 数据类型
  2. // 基本类型, 复合类型, 特殊类型
  3. // ①. 基本类型
  4. // 字符串
  5. $name = '手机';
  6. // 数值
  7. $salesnum = 2980;
  8. // 布尔
  9. $is5G = false;
  10. // ②. 复合类型, 对象,数组
  11. // 对象
  12. $obj = new stdClass;
  13. // 对象是属性和方法的无序集合
  14. $obj->name = 'Tom zhu';
  15. $obj->age = 35;
  16. echo $obj->name, '<hr>';
  17. // 数组
  18. $arr = ['电脑', 4500, 'Dell'];
  19. // print_r()以人性化的方式打印变量,true表示不直接打印,而返回
  20. // 返回就是一定要有一个接收者
  21. $str = print_r($arr, true);
  22. echo '<pre>'.$str.'</pre>';
  23. // 基本类型: 标量, 单值
  24. // 复合类型: 多值,
  25. // ③. 特殊类型
  26. // NULL
  27. $num = null;
  28. var_dump($num);
  29. // $f就是文件资源类型
  30. $f = fopen('demo2.php', 'r');
  31. var_dump($f);
  32. echo gettype($f);

(2)变量的类型转化

变量可以直接随着赋值性质的变化而变化,也可以随着被操作过程的情况而变化。

  • 第一种:随着赋值性质的变化而变化
  1. // 变量的动态: 是指变量的类型可以随值而变化
  2. $var = 100;
  3. var_dump($var);
  4. echo '<hr>';
  5. $var = 'abc.com';
  6. var_dump($var);
  • 第二种:随着被操作过程的情况而变化
  1. // ① 自动转换: 由php系统后台进行,不需要用户主动参与
  2. $a = null;
  3. $b = true;
  4. $c = false;
  5. $d = '5g';
  6. $e = 'php';
  7. $f = 15;
  8. // null在算术运算中自动转为0
  9. echo $a + 10, '<br>';
  10. // true在算术运算中转为1
  11. echo $b + 10, '<br>';
  12. // echo $d + 10, '<br>';
  13. // echo $e + 10, '<br>';
  14. // . : 字符串连接操作
  15. echo $e . $f, '<br>';
  16. echo '<hr>';
  17. // ② 强制转换:如果不想看到警告,通过强制转换解决
  18. echo (int)$e + 10, '<br>';
  19. echo intval($e) + 20, '<br>';
  20. echo strval($f) . ' hello';
  21. echo gettype($f);
  22. echo '<hr>';
  23. // ③ 永久转换
  24. settype($f, 'string');
  25. echo gettype($f);

(3)变量的动态传递创建

达到$email = ‘admin@abc.com’这个效果的另外一种方式如下,从中可以看到变量名以赋值的方式

  1. $var = 'email';
  2. $$var = 'admin@abc.com';
  3. echo $email;

4. 变量值的传递

两种方式:有值传递、引用传递

  1. // ①. 值传递,也是默认的方式
  2. $salesnum1 = 8999;
  3. $salesnum2 = $salesnum1;
  4. // 更新salesnum2
  5. $salesnum2 = 9999;
  6. // 查看salesnum1
  7. echo 'salesnum1 = ' . $salesnum1 . '<hr>';
  8. // ②. 引用传递
  9. $salesnum1 = 99;
  10. // 在等号的右边/右值前面加上&(取地址符)
  11. // 当前$salesnum2中保存的并不是99, 而是$salesnum1变量
  12. //在内存中的地址, [0xabcd1234] = 99
  13. $salesnum2 = &$salesnum1;
  14. // 更新salesnum2
  15. $salesnum2 = 9999;
  16. // 查看salesnum1, 会发现print1与salesnum2同步更新了
  17. echo 'salesnum1 = ' . $salesnum1 . '<hr>';
Correcting teacher:GuanhuiGuanhui

Correction status:qualified

Teacher's comments:第一个代码块,sum函数写错了,自己检查下!
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