从零开始学PHP之变量作用域数据类型

一、数据类型

上篇文章提到了数据类型,在PHP中支持以下几种类型

  1. String (字符串)
  2. Integer(整型)
  3. Float (浮点型)
  4. Boolean(布尔型)
  5. Array(数组)
  6. Object(对象)
  7. Null(空值)
  8. Resource(资源类型)

下面我们用PHP种var_dump打印数据来查看数据类型

1、String(字符串)

一个字符串和一串字符的序列,就像咱们的 ”hello word“。你可以讲任何文本放在单双引号中
代码片段

<!DOCTYPE html>
<html>
<body>
    <h1>变量创建</h1>
    <?php
        $txt="Hello world!";
        var_dump($txt);
    ?>
</body>
</html>

在这里插入图片描述
效果
在这里插入图片描述

2、Integer(整型)

整形规则
  1. 整数必须包含一个数字0-9
  2. 整数不能包含空格或者特殊符号
  3. 整数中不能包含小数点
  4. 整数可以正数或者负数
  5. 整形可以用三种格式来指定:十进制,十六进制(以0x为前缀)或八进制(前缀为0)

代码片段

<!DOCTYPE html>
<html>
<body>
    <h1>变量类型</h1>
    <?php
    $float_a = 5985;
    var_dump($float_a);
    echo "<br>";
    $float_b = -345; // 负数
    var_dump($float_b);
    echo "<br>";
    $float_c = 0x8C; // 十六进制数
    var_dump($float_c);
    echo "<br>";
    $float_d = 047; // 八进制数
    var_dump($float_d);
    ?>
</body>
</html>

在这里插入图片描述
效果
在这里插入图片描述

3、Float(浮点型)

浮点数是带小数部分的数字,或是指数形式。
代码片段

<!DOCTYPE html>
<html>
    <body>
        <h1>变量类型</h1>
        <?php
        $x = 10.365;
        var_dump($x);
        echo "<br>";
        $x = 2.4e3;
        var_dump($x);
        echo "<br>";
        $x = 8E-5;
        var_dump($x);
        ?>
    </body>
</html>

在这里插入图片描述
效果
在这里插入图片描述

4、Boolean(布尔型)

布尔型一般用来判断,布尔型可以是 TRUE 或 FALSE。主要用于条件判断
在接下来的章节中你会学到更多关于条件控制的教程。

5、Array(数组)

数组可以在一个变量中存储多个值。可以有一维数组和多维数组,以下代码片段是创建一个数组并打印出类型

代码片段

<!DOCTYPE html>
<html>
    <body>
        <h1>变量类型</h1>
        <?php
        //基本数组定义 设置key值
        $array=array('key'=>'value');
        //例如
        $array1=array("name"=>'张三',''=>"BMW","Toyota");
        //或不设置key值,默认数组下标 从0开始
        $array2=array("value");
        //例如
        var_dump($array1);
        var_dump($array2);
        ?>
    </body>
</html>

在这里插入图片描述

效果
在这里插入图片描述
array(1)代表这个数组中有1个元素

6、Object(对象)

这个后期讲到面向对象的时候会讲到此处不作解释

7、Null(空值)

NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。

8、Resource(资源类型)

PHP 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。
常见资源数据类型有打开文件、数据库连接、图形画布区域等。
由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。
这个时候就不能用var_dump来打印了,可以使用 get_resource_type() 函数可以返回资源(resource)类型:
此函数返回一个字符串,用于表示传递给它的 resource 的类型。如果参数不是合法的 resource,将产生错误。
这个部分等到讲到php链接数据库的时候讲到

二、变量作用域

变量的作用域是脚本种变量可能被引用/使用的部分
PHP有四种不同的变量作用域:

  1. Local
  2. Global
  3. Static
  4. Parameter

1、局部和全局作用域

这个时候就会引入php种函数的概念,在函数外部定义的变量拥有全局作用域,就相当于公园里的座椅是公用的,谁都可以坐,所以全局变量可以被所有函数引用/使用
在函数内定义的变量为局部变量,函数相当于你的家,局部变量相当于你家的座椅,只能在你家里坐,所以局部变量只能被当前函数引用/使用

2、关键字

1、global

global 关键字用于函数内访问全局变量,相当于你在家里想坐公园的座椅,但是你家里没有,你可以让global去公园里照着公园的座椅仿制一个搬到你家里来,这样就达到了你能在家里坐到公园里的椅子

不使用global
代码示例

<!DOCTYPE html>
<html>
    <body>
        <h1>变量作用域</h1>
        <?php
        $x=5;
        $y=10;
        function myTest()
        {
            $x,$y;
            $y=$x+$y;
        }
        myTest();
        echo $y; // 输出 15
        ?>
    </body>
</html>

这个时候编辑器提示报错
在这里插入图片描述
效果
在这里插入图片描述

Parse error: syntax error, unexpected token "," in G:\phpstudy_pro\WWW\www.helloword.com\index.php on line 10
翻译:解析错误:语法错误,G:\phpstudy-pro_WWW\WWW.helloword.com\index.php第10行出现意外标记“,”

使用global
代码示例

<!DOCTYPE html>
<html>
    <body>
        <h1>变量作用域</h1>
        <?php
        $x=5;
        $y=10;

        function myTest()
        {
            global $x,$y;
            $y=$x+$y;
        }

        myTest();
        echo $y; // 输出 15
        ?>
    </body>
</html>

编辑器不提示报错
在这里插入图片描述
效果
正常输出数据
在这里插入图片描述

2、Static

当一个函数完成时,它的所有变量通常都会被删除。但是有的时候你希望保留某个局部变量不要被删除所以就用到了static关键字
不使用 static关键字
代码示例

<!DOCTYPE html>
<html>
    <body>
        <h1>变量作用域</h1>
        <?php
        function myTest()
        {
            $x=0;
            echo $x;
            $x++;
            echo PHP_EOL;    // 换行符
        }

        myTest();
        myTest();
        myTest();
        ?>
    </body>
</html>

调用三次
在这里插入图片描述
效果
输出 000在这里插入图片描述
使用static
代码示例

<!DOCTYPE html>
<html>
    <body>
        <h1>变量作用域</h1>
        <?php
        function myTest()
        {
            static $x=0;
            echo $x;
            $x++;
            echo PHP_EOL;    // 换行符
        }

        myTest();
        myTest();
        myTest();
        ?>
    </body>
</html>

调用三次
在这里插入图片描述
效果
输出123
在这里插入图片描述

3、Parameter(参数作用域)

参数是通过调用代码将值传递给函数的局部变量。参数是在参数列表中声明的,作为函数声明的一部分
参数作用域就相当于你告诉你的朋友 ,今天来我家吃饭,你想吃啥可以带点食材来我来加工成你想吃的菜
你家(函数)
参数(食材)
成品(结果)

代码示例
这段代码的意思就是 你朋友带鱼来,你就可以做糖醋鱼

<!DOCTYPE html>
<html>
    <body>
        <h1>变量作用域</h1>
        <?php
        function myTest($parameter)
        {
           if($parameter=='鱼'){
               echo "糖醋鱼";
           }
        }
        myTest('鱼');
        ?>
    </body>
</html>

在这里插入图片描述
效果
在这里插入图片描述

预告

下期讲函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/896947.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

天锐绿盾 vs Ping32:企业级加密软件大比拼

在信息安全日益重要的今天&#xff0c;企业级加密软件成为了企业保护敏感数据的得力助手。在众多加密软件中&#xff0c;天锐绿盾与Ping32凭借各自的优势&#xff0c;赢得了市场的广泛认可。那么&#xff0c;这两款软件究竟有何异同&#xff1f;哪款更适合您的企业呢&#xff1…

Java 输入与输出(I/O)流的装饰流【处理流】

Java I/O流的装饰流 按照Java 输入与输出&#xff08;I/O)流的处理功能&#xff1a;I/O流可分为低级的节点流和高级的装饰流&#xff08;又称处理流&#xff09;。 节点流是直接从数据源&#xff08;数据源可以是文件、数组、内存或网络&#xff09;读/写数据的输入输出流&am…

西南交通大学计算机软件专业上岸难度分析

C哥专业提供——计软考研院校选择分析专业课备考指南规划 西南交通大学计算机科学与技术2024届考研难度整体呈现"稳中有升"的态势。学硕实际录取33人&#xff0c;复试分数线362分&#xff0c;复试录取率71.74%&#xff1b;专硕&#xff08;计算机技术&#xff09;实际…

Mac M3安装VMWare Fusion

最近学习Spark需要下载VM Ware&#xff0c;但是我的电脑是MAC M3系列&#xff0c;百度说不能下载Workstation Pro&#xff0c;Workstation Pro 适用于Windows、Linux系统。而MAC M系列电脑需要下载Fusion Pro 。 Fusion Pro的下载页面很难找到。根据以下指引可正确下载&#x…

OpenCV物体跟踪:使用CSRT算法实现实时跟踪

目录 简介 CSRT算法简介 实现步骤 1. 初始化摄像头和跟踪器 2. 读取视频帧和初始化跟踪 3. 实时跟踪和显示结果 4. 显示和退出 5、结果展示 总结 简介 在计算机视觉和视频处理领域&#xff0c;物体跟踪是一项核心技术&#xff0c;它在监控、人机交互、运动分析等方面…

纯前端实现语音合成并输出提示

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>语音合成</title><style>body {max-…

解决mac ssh端终端只有黑白颜色的问题

主要是因为没有开启颜色配置。修改下文件即可 cd ~ vi .zshrc 内容如下 export LS_OPTIONS--colorauto export CLICOLORYes export LSCOLORSExgxcxdxcxegedabagGxGx 关闭终端后重登录&#xff0c;这下有颜色了好看了 配色&#xff1a;目录蓝 可执行绿 软链青 颜色配置 详…

使用网络爬虫爬取豆瓣电影网站的数据

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

MySQL数据库操作——(4)

目录 8 视图 8.1 常见的数据库对象 8.2 视图概述 8.2.1 为什么使用视图&#xff1f; 8.2.2 视图的理解 8.3 创建视图 8.3.1 创建单表视图 8.3.2 创建多表联合视图 8.3.3 基于视图创建视图 8.4 查看视图 8.5 更新视图的数据 8.5.1 一般情况 8.6 修改、删除视图 8.…

Linux kernel 堆溢出利用方法

前言 本文还是用一道例题来讲解几种内核堆利用方法&#xff0c;内核堆利用手段比较多&#xff0c;可能会分三期左右写。进行内核堆利用前&#xff0c;可以先了解一下内核堆的基本概念&#xff0c;当然更好去找一些详细的内核堆的基础知识。 概述 Linux kernel 将内存分为 页…

数据结构_day3

目录 4.栈 stack 4.2.1 特性 练习&#xff1a; 4.3 链式栈 4.3.1 特性 总结&#xff1a; 4.栈 stack 4.2.1 特性 逻辑结构&#xff1a;线性结构 存储结构&#xff1a;顺序结构 操作&#xff1a;创建、入栈、出栈、判空和判满 创空&#xff1a; 入栈&#xff1a; 出栈&#xff1…

【自然语言处理】多头注意力机制 Multi-Head Attention

多头注意力&#xff08;Multi-Head Attention&#xff09;机制是Transformer模型中的一个关键组件&#xff0c;广泛用于自然语言处理任务&#xff08;如机器翻译、文本生成等&#xff09;以及图像处理任务。它的核心思想是通过多个不同的注意力头来捕获输入的不同特征&#xff…

虚拟现实与Facebook的结合:未来社交的全新体验

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术正在逐步改变人们的社交方式。Facebook&#xff0c;作为全球最大的社交媒体平台之一&#xff0c;积极探索如何将虚拟现实融入其社交生态系统&#xff0c;创造全新的用户体验。这一结合不仅影响了用户之间…

深度解析机器学习的四大核心功能:分类、回归、聚类与降维

深度解析机器学习的四大核心功能&#xff1a;分类、回归、聚类与降维 前言分类&#xff08;Classification&#xff09;&#xff1a;预测离散标签的艺术关键算法与代码示例逻辑回归支持向量机&#xff08;SVM&#xff09; 回归&#xff08;Regression&#xff09;&#xff1a;预…

探索秘境:如何使用智能体插件打造专属的小众旅游助手『小众旅游探险家』

文章目录 摘要引言智能体介绍和亮点展示介绍亮点展示 已发布智能体运行效果智能体创意想法创意想法创意实现路径拆解 如何制作智能体可能会遇到的几个问题快速调优指南总结未来展望 摘要 本文将详细介绍如何使用智能体平台开发一款名为“小众旅游探险家”的旅游智能体。通过这…

获取非加密邮件协议中的用户名和密码——安全风险演示

引言 在当今的数字时代,网络安全变得越来越重要。本文将演示如何通过抓包工具获取非加密邮件协议中的用户名和密码,以此说明使用非加密协议的潜在安全风险。通过这个演示,我们希望能提高读者的安全意识,促使大家采取更安全的通信方式。 注意: 本文仅用于教育目的,旨在提高安全…

【MyBatis】初识MyBatis 构建简单框架

目录 MyBatis前言搭建一个简单的MyBatis创建Maven项目引入必要依赖创建数据表结构创建User实体类创建Mapper接口Mapper层Dao层 创建MyBatis的Mapper映射文件编写测试类传统测试类JUnit测试 MyBatis 介绍&#xff1a;MyBatis是一款半自动的ORM持久层框架&#xff0c;具有较高的…

Linux下ClamAV源代码安装与使用说明

Linux下ClamAV源代码安装与使用说明 ClamAV(Clam AntiVirus)是一款开源的防病毒工具,广泛应用于Linux平台上的网络安全领域。它以其高效的性能和灵活的配置选项,成为网络安全从业人员的重要工具。ClamAV支持多线程扫描,可以自动升级病毒库,并且支持多个操作系统,包括Li…

NGINX 保护 Web 应用安全之基于 IP 地址的访问

根据客户端的 IP 地址控制访问 使用 HTTP 或 stream 访问模块控制对受保护资源的访问&#xff1a; location /admin/ { deny 10.0.0.1; allow 10.0.0.0/20; allow 2001:0db8::/32; deny all; } } 给定的 location 代码块允许来自 10.0.0.0/20 中的任何 IPv4 地址访问&#xf…