欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

php运行原理与变量类型

程序员文章站 2022-04-17 18:47:15
...

php 运行原理

  • PHP: 超文本预处理语言
  • PHP: 是一种可以嵌入到 HTML 文档中的服务器端脚本语言
  • PHP 也是使用标签嵌入到 HTML 文档中,和 css/js 是一样的
  • <?php: 起始标签
  • ?>: 结束标签
  • html 文档中一旦嵌入到 php 代码,那必须将扩展名由.html更新为.php
  • 浏览器并不能直接解析 HTML 文档中的 php 代码
  • 如果要解析 html 中的 php 代码,需要在 web 服务器中安装 php 解释器(php.exe)
    php运行原理与变量类型

PHP 变量

1、变量的作用

  • 程序中总会有一些数据, 需要反复使用, 将它们临时保存到一个变量中
  • 变量实现了数据的复用 (函数实现了代码的复用)
  • 与其它语言不同之处, php 变量使用前不要声明——php 没有变量声明语句,直接赋值
  • 所谓变量声明, 可以简单的理解为:向内存申请一块空间,用来存储数据, 变量名就是内存地址的编号
  • 赋值:第一次要初始化, 第二次叫更新/修改
  1. $a = 100;

标识符:命名规范:,只允许使用字母,数字和下划线,且不能以数字开头

PHP 变量三要素

  • php 的变量名与普通的标识符是不一样, 必须要用$开头
  • 必须满足 php标识符的命名规范字符串, 数字或下划线组成,并且不能以数字开始
  • 变量名严格区分大小写(PHP 函数不区分大小写)$username, $userName
    变量$9a非法,不能以数字开始

  • 除了用户自定义变量, 系统为了方便用户, 还预定义一些变量

  • 预定义变量通常可以反映程序的状态,例如服务器变量, 请求变量, 不受作用域限制
  1. //预定义变量
  2. echo '脚本名称: ' . $_SERVER['SCRIPT_NAME']. '<br>';
  3. echo '浏览器: ' . $_SERVER['HTTP_USER_AGENT']. '<br>';
  4. echo '服务器: ' . $_SERVER['SERVER_SOFTWARE']. '<br>';
  5. echo 'GET请求参数: ' . $_GET['id'];
  6. echo '<hr>';
  7. $table;
  8. if (is_null($table)) {
  9. echo '$table 的值 null';
  10. }

2、变量的类型:(任何一个变量一定是属于某种数据类型)

  • php 是弱类型语言, 变量的类型, 完成由它的值来确定
  • 变量值的类型, 根据存储方式, 分为三类: 原始类型, 复合类型, 特殊类型

为什么变量数据有类型

(1、)操作的要求
  • 只有先明确了数据的类型, 才能定允许的操作
  • 例如, 数值允许进行算术运算, 字符串不能进行算术运算
    100 + 30 = 130; //有意义
    abc - qer //无意义
(2、)存储的要求
  • 只有先明确了数据类型, 才能正确的分配内存空间来保存它
  • 很明显, 数值,字符中, 布尔值,它们占用的空间肯定不一样的

基本类型

  • 数值: 100, 3.14, -9.8
  • 字符串: 'admin', "php.cn", 需要用单引号或双引号做为定界符进行封装。单引号不解析变量;双绰号解析变量
  1. <?php
  2. //双引号字符串中的变量
  3. $name = '朱老师';
  4. //单引号字符串中的变量不会被解析
  5. echo '我是:$name'. '<br>';
  6. //双引号字符串中的变量会被解析
  7. echo "我是:$name". '<br>';
  8. //{}定界符
  9. echo "我是:${name}abc". '<br>';
  10. //双引号中特殊字符会被解析
  11. /*\t-制表符,四个空格
  12. \" \" 转义
  13. */
  14. echo "This\t 'is' a\t \"demo\"";
  15. //大段字符串的输出,<<<Heredoc Heredoc; 功能相当于双引号,用于代码中有大量双引号时
  16. //"<a href=\"www.php.cn\" id=\"abc\">xxxx</a>"
  17. echo <<<DEREDOC
  18. <h3 style="color: red">"PHP\t中文网"{$name}</h3>
  19. HEREDOC;
  20. echo <<< "HELLO"
  21. <h3 style="color: green">"PHP\t中文网"{$name}</h3>
  22. HELLO;
  23. echo '<hr>';
  24. // nowdoc: 功能与单引号创建的字符串类似
  25. echo <<< 'NOWDOC'
  26. <h3 style="color: green">"PHP\t中文网"{$name} 'php真香'</h3>
  27. NOWDOC;
  • 布尔型: 只有真,假二个值true | false,通常用在逻辑判断中

取值范围:
每种数据类型的取值范围不一样
存储方式:

  • 栈: 定长的存储单元, 整数 4-8 个字节, 字符串的入口地址放进去
  • 堆: 不定长的存储单元, 数组, 对象,字符串本身
    php运行原理与变量类型

复合类型

类型说明:

  • 一个变量名对应一个值: 单值类型/标量类型
    $name = 'peter zhu'; $gender = 'male';
  • 一个变量名与多个值对应: 多值类型/复合类型: 数组/对象

将变量输出的方式:

  • echo :回显,无返回值
  • print :有返回值
  • print_r
  • var_export():可以生成变量的 php 源代码的字符串表示
  • var_dump:打印出变量详细信息,支持一次查询多个
  1. <?php
  2. $name = 'perter zhu';
  3. $age = 30;
  4. $isMarried = true;
  5. //单值读取
  6. //echo 回显,无返回值
  7. echo '年龄:' .$age . '<br>';
  8. echo $name .'年龄:' .$age . '<br>';
  9. echo $name ,'年龄:' ,$age , '<br>';
  10. echo '姓名:'.$name.'<br>';
  11. //[]是数组
  12. echo '姓名的第一个字母:' .$name[0].'<br>';
  13. //推荐{}
  14. echo '姓名的第一个字母:' .$name{0}.'<br>';
  15. print('年龄:' .$age . '<br>');
  16. //print 有返回值
  17. echo print('年龄:' .$age . '<br>');
  18. echo '<hr>';
  19. // 第二个参数true, 不是输出, 而是返回return
  20. echo print_r($name, true);
  21. echo '<hr>';
  22. // 复合数据, 数组
  23. $data = range(1,20,2);
  24. // 数组
  25. $result = print_r($data, true);
  26. // 字符串
  27. //echo gettype($result);
  28. //print_r($result);
  29. echo '<pre>' . $result . '</pre>';
  30. echo '<hr>';
  31. echo $name . '<br>';
  32. // var_export(): 可以生成变量的php源代码的字符串表示
  33. var_export($name);
  34. echo '<pre>' . var_export($data, true) . '</pre>';
  35. //打印出变量详细信息,支持一次查询多个
  36. var_dump($name, $age, $isMarried);

php运行原理与变量类型

  • 复合类型:可以理解来原始类型的 PLUS 版, 通常是由一个或多个原始类型的值组成
  • 复合类型有二种类型: 数组对象

  • 数组

  • 数组中的元素必须使用特殊的语法进行访问:变量名+键名,$arr[2],$user['id']
  • 如果键名是数值,称为:索引数组, 如果键名是连续的正整数, 可以省略键名
  • 如果键名是字符串, 称为关联数组

  • 对象

  • 对象是由new指令,调用一个称为构造函数的一个特殊函数创建,或者实例化一个来创建
  • 对象的成员称之为属性方法,使用变量名+成员指向符
  • $obj->table, 或者$obj->getEmail()

特殊类型

  • 所谓特殊,是指它的值比较特殊, 通常不会参与到运算中, 或者运算结果无意义
  • 特殊类型有二种: null, resourece资源类型
  • null: 称为空类型, 当一个变量没有被初始化的时候,默认就是null
  • resourece资源类型, 例如一个文件, 一张图片, 一个数据库的连接

类型转换

  • 查询: gettype($data)
  • 设置: settype($data, 'string'), 这是永久性的
  • 强制: intval($data), strval($data), 这种转换是临时性,原始类型并不改变
  • 判断: is_int(), is_string(), is_array(), is_object(),is_null()
  • 自动: 当操作符二边的类型不一致的时候, 会触发自动转换机制