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

news2024/10/22 5:01:56

一、数据类型

上篇文章提到了数据类型,在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>

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

预告

下期讲函数

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

滤波算法与SLAM:从概率角度理解SLAM问题

滤波算法与SLAM 第三章&#xff1a;MAP/MLE问题和贝叶斯网络 文章目录 滤波算法与SLAM前言一、最大后验问题&#xff08;MAP&#xff09;与最大似然问题&#xff08;MLE&#xff09;二、贝叶斯网络与SLAM问题三、因子图与SLAM问题四、从概率角度理解Kalman Filter与SLAM 前言 …

我谈傅里叶变换幅值谱的显示

在图像处理和分析中通常需要可视化图像傅里叶变换的幅值谱。通过幅值谱&#xff0c;可以直观地观察频率成分的分布&#xff0c;帮助理解图像的结构和特征。 很多刊物中直接显示傅里叶变换的幅值谱。 FFT fftshift(fft2(double(Img))); FFT_mag mat2gray(log(1abs(FFT)));由…

【Linux】线程基本概念,线程控制

目录 基本概念 重新理解进程 线程真实存在吗&#xff1f; 问题解答 线程资源 线程控制 线程创建 如何全面看待线程函数传参 如何看到线程函数返回 线程查询 线程等待 线程终止 线程分离 基本概念 线程&#xff08;thread&#xff09;是指在单个进程内&#xff0c;多…

探索前端与 AI 的结合:如何用 GPT-4 助力开发效率

前言&#xff1a;开发者的“神队友” GPT-4 还记得那些深夜奋战&#xff0c;紧盯着屏幕敲代码的日子吗&#xff1f;表单不验证、布局乱飞、BUG 根本找不到&#xff0c;这些时刻简直能让人抓狂。你可能会想&#xff1a;“要是有个智能助手能帮我搞定这些多好&#xff01;” 那么…

#HarmonyOS:页面和自定义组件生命周期

页面生命周期 即被Entry装饰的组件生命周期 onPageShow&#xff1a;页面每次显示时触发一次&#xff0c;包括路由过程、应用进入前台等场景。onPageHide: 页面每次隐藏时触发一次&#xff0c;包括路由过程、应用进入后台等场景。onBackPress: 当用户点击返回按钮是触发 组件…

全面了解 NGINX 的负载均衡算法

NGINX 提供多种负载均衡方法&#xff0c;以应对不同的流量分发需求。常用的算法包括&#xff1a;最少连接、最短时间、通用哈希、随机算法和 IP 哈希。这些负载均衡算法都通过独立指令来定义&#xff0c;每种算法都有其独特的应用场景。 以下负载均衡方法&#xff08;IP 哈希除…

如何让自己的网站,被更多的人搜索到(免费方案)

文章目录 一、要做时间的朋友二、需要独立IP的服务器三、SEO信息如何设置设置网站TDK生成网站地图设置搜索引擎自动提交部署SSL证书加分项&#xff1a;定期更新文章 引言&#xff1a; 许多人都有这样一个问题&#xff1a;做好自己的网站&#xff0c;如何让这个网站被更多的人浏…

WPF实现类似网易云音乐的菜单切换

这里是借助三方UI框架实现了&#xff0c;感兴趣的小伙伴可以看一下。 深色模式&#xff1a;​ 浅色模式&#xff1a; ​这里主要使用了以下三个包&#xff1a; MahApps.Metro&#xff1a;UI库&#xff0c;提供菜单导航和其它控件​​​​​​​ 实现步骤&#xff1a;1、使用B…

SSRF-利用dict协议-攻击redis

1.靶场准备&#xff1a; CTFHub-技能树-Web-SSRF-Redis协议 蚁剑AntSword 2.简述&#xff1a; 2.1 SSRF 服务器端请求伪造&#xff0c;存在一个url参数&#xff0c;一般用于图片上传、网页重定向等&#xff0c;我们可以控制url参数&#xff0c;去访问内网服务器的敏感内容…

前端vue框架配置基础信息详解分析

前端vue2、vue3框架是我们最近常用的框架&#xff0c;今天我们分析一下配置基础信息、详解其中的功能含义。 1、vue.config.js 文件分析 这个 vue.config.js 文件是 Vue CLI 项目中用于配置项目构建行为和开发环境设置的文件。它能够让开发者定制打包、代理、路径、样式等方面…

干货:落地企业级RAG的实践指南

1. 什么是RAG&#xff1f; 检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;简称 RAG&#xff09;通过结合大型语言模型&#xff08;LLM&#xff09;和信息检索系统来提高生成文本的准确性和相关性.这种方法允许模型在生成回答之前&#xff0c;先从权威知…

spdlog学习记录

spdlog Loggers&#xff1a;是 Spdlog 最基本的组件&#xff0c;负责记录日志消息。在 Spdlog 中&#xff0c;一个 Logger 对象代表着一个日志记录器&#xff0c;应用程序可以使用 Logger 对象记录不同级别的日志消息Sinks&#xff1a;决定了日志消息的输出位置。在 Spdlog 中&…

深入拆解TomcatJetty(三)

深入拆解Tomcat&Jetty&#xff08;三&#xff09; 专栏地址&#xff1a;https://time.geekbang.org/column/intro/100027701 1 Tomcat组件生命周期 Tomcat如何如何实现一键式启停 Tomcat 架构图和请求处理流程如图所示&#xff1a; 对组件之间的关系进行分析&#xff0c;…

MySQL(python开发)——(3)表数据的基本操作,增删改查

MySQL&#xff08;python开发)——&#xff08;1&#xff09;数据库概述及其MySQL介绍 MySQL&#xff08;python开发)——&#xff08;2&#xff09;数据库基本操作及数据类型 MySQL—— 表数据基本操作 一、表中插入(insert)数据——增 insert into 表名 values (值1&#…

人工智能正在扼杀云计算的可持续性

可持续性曾是公共云计算中备受推崇的优势。企业和云提供商大肆宣扬他们的绿色计划&#xff0c;推广采用可再生能源的数据中心&#xff0c;以减少碳足迹。 近几个月来&#xff0c;这个话题已悄然淡出人们的视线。罪魁祸首是什么&#xff1f;对人工智能功能的无限需求正在推动云…

大数据-180 Elasticsearch - 原理剖析 索引写入与近实时搜索

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Django配置路由后,为什么输入http://127.0.0.1:8000/ 网址后报错了?

问题探讨&#xff1a;为什么输入http://127.0.0.1:8000/ 网址后报错了&#xff1f; 翻译一下&#xff1a; 屏蔽一下新加的路由 发现界面正常了 现在翻译一下&#xff1a; 是不是比较理解了&#xff0c;admin 属于默认配置的URL,所以urlpatterns为空列表或仅配置admin路由时&…

【算法篇】贪心类(1)(笔记)

目录 一、理论基础 1. 大纲 2. 求解步骤 二、Leetcode 题目 1. 分发饼干 2. 摆动序列 3. 最大子序和 4. 买卖股票的最佳时机 II 5. 跳跃游戏 6. 跳跃游戏 II 7. K 次取反后最大化的数组和 8. 加油站 9. 分发糖果 一、理论基础 1. 大纲 2. 求解步骤 将问题分解为…

人工智能:塑造未来生活与工作的力量

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 引言 随着人工智能技术的不断发展&#xff0c;我们已经看到了它在各行业带来的巨大变革。 在医疗行业中…

【wpf】08 xml文件的存取操作

在使用wpf编程过程中&#xff0c;会用到xml的配置文件&#xff0c;实现对其读取和存储的操作是必须的。 1 xml说明 可扩展标记语言 (Extensible Markup Language, XML) &#xff0c;标准通用标记语言的子集&#xff0c;可以用来标记数据、定义数据类型&#xff0c;是一种允许…