PHP初识

news2024/12/27 14:14:44

php简介

PHP全称超文本预处理语言,是在服务器端执行的脚本语言,是一种简单的,面向对象的开源脚本语言PHP脚本可以让Web开发人员快速的书写动态生成的网页

PHP脚本以<?php开始,以?>结束

<?php
echo "hello world";
//这是php单行注释
/*这是
php
多行注释
*/
?>

放在在PHPstudy的WWW目录下,访问本地加PHP脚本名称执行代码

PHP 中的每个代码行都必须以分号结束。PHP 代码块的关闭标签会自带分号结束符的作用(因此在 PHP 代码块的最后一行可以不使用分号),分号是一种分隔符,用于把指令区分开来。

PHP变量

  • PHP变量以$符号开始,后面跟着变量名称

  • 变量名必须以字母或者下划线开始

  • 变量名只能包含字母、数字和下划线

  • 变量名是区分大小写的($y和$Y是两个不同的变量)

PHP语句和变量都是区分大小写的

创建变量

PHP没有声明变量的命令,变量在第一次赋值给它的时候被创建

当给变量赋一个文本值时,记得在文本两侧加上引号

<?php
$txt="Hello world!";
$x=5;
$y=10.5;
echo $x,$y;
?>

预定义变量

PHP提供了大量的预定义变量指提前系统定义的变量,可以直接拿来用(预定义变量都是以数组的形式存在的),这个定义与其他编程语言里的库函数类似

  • $_GET:获取所有表单以get方式提交的数据

  • $_POST:POST提交的数据都会保存在此

  • $_REQUEST:GET和 POST提交的都会保存。

  • $_GLOBALS:PHP中所有的全局变量

  • $_SERVER:服务器信息

  • $_SESSION: session 会话数据

  • $_COOKIE: cookie 会话数据

  • $_ENV:环境信息

  • $_FILES:用户上传的文件信息

可变变量

如果一个变量保存的值刚好是另一个变量的名字,那么可以直接通过访问一个变量得到另外一个变量的值,只需要在变量前面多加一个$符号

变量传值

将一个变量赋值给另外一个变量,称为变量传值

变量传值一共有两种方式:

值传递:

将变量保存的值复制一份,然后将值赋给另外一个变量保存(两个变量没有关系)

引用传递:

将变量保存的值所在的内存地址,传递给另外一个变量(两个变量指向同一块内存空间,是同一值)有点指针的味道

语法:
$新变量 = & $旧变量

常量

常量顾名思义是一种在程序运行过程中不可改变的量

常量的定义

在PHP中常量一般由两种定义方式:

define定义常量

语法:
define('常量名',常量值)

const定义常量

语法:
const 常量名 = 常量值
特点是常量名不需要加引号了

系统常量

跟变量一样,常量也有系统帮助用户定义好的常量,可以直接拿来用

常用的几个系统常量:

  • PHP_VERSION: PHP版本号

  • PHP_INT_SIZE: 整数所占用的字节大小

  • PHP_INT_MAX:表示整数能表示的最大值( PHP中整型是允许出现负数: 带符号)

当然这些只是举了一个小例子,在PHP中也还有其他的系统常量,如在VCcode输入关键字时,在弹出的对话框中可以看到其他的数据类型也拥有系统常量值

在对话框的右侧也会拥有相关的注解,虽然是英文但不影响观感

魔术常量

在PHP中还有一些特殊的常量,他们以双下划线开始 常量名 双下划线结束,这种常量称之为系统魔术常量,魔术常量的值通常会跟随这环境变化,但是用户改变不了

  • __LINE__:表示文件中的当前行号

  • __FILE__:

当前被执行脚本在所在电脑的绝对路径(带当前文件名)

  • __DIR__

当前被执行的脚本所在电脑的绝对路径

可以看到与FILE的区别就是不会带出当前脚本的文件名

下面这些暂时没有了解到实际意义,后续补充

  • __FUNCTION__:返回函数被定义时的名字

  • __CLASS__:返回当前所属类

  • __TRAIT__:

  • __METHOD__:当前所属方法

  • __NAMESPACE__:当前所属的命名空间

数据类型

在PHP中将数据分为三大类,八小类

基本数据类型:4个小类

String(字符串)

系统根据实际长度分配,一个字符串是一串字符的序列,用引号包裹

可以将字符串放在单引号或双引号

PHP单引号与双引号的区别

在PHP中单引号串和双引号串的处理方式是不同的,双引号里面的数据会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,总被认为是普通字符直接输出。

可以看到在单引号中,变量和特殊字符都无法被识别【除\\、\'将会被转义输出】,是直接被当做普通字符输出在网页中,在vc中也提供了颜色的不同显示,方便用户查看数据之间的区别,仔细看可以看到被转义的数据颜色要淡一点,<br>我自己理解的是因为它是HTML标签所以会被网页执行

而双引号,颜色高亮就发生了变化,变量和转义字符都被解析到,除了\'以外(因为引号不同的原因,在双引号中如果需要输出单引号不需要转义可以直接输出,单引号中同理)

至于为什么后面的\n、\r、\t都显示空白,得出一个结论在php中,\n、\r、\t这些操作符是对源码进行操作,在浏览器中没有作用;而<br>这个标签只在浏览器中起换行作用,所以在源码中会显示这个标签,但是在源码中不换行

Integer/Int(整型)

系统分配4个字节存储,表示整数类型(有前提如:不能超过最大值才为整型)

进制数的定义

默认输出的就是十进制,当不做任何转换时,会自动将定义的其他进制数转换为10进制输出

八进制:0XXX

二进制:0bXXX

十六机制:0xXXX

当我们想要输出其他进制的结果时,可以使用运算或者是PHP内置函数进行转换

提供的内置函数都是以两种进制的代表缩写来完成组合达到转换目的,可以直接拿来使用

Float/Double(浮点型)

两种表示方法为同一概念互相没有区别,系统分配8个字节存储,表示小数,或者存储整型存不下的整数

浮点型主要有两种表示方式:小数,科学计数法

我们知道PHP系统常量PHP_INT_MAX表示的是int类型的最大值,当我们将最大值+1后,利用var_dump函数查看时可以看到变成了float,以此得出结论当整型超过自身存储大小后会用浮点型存储

Boolean(布尔型)

只有两个值TRUE和FALSE

复合数据类型:2个小类

Array(数组):一次性存放多个数据

Object(对象):存放对象

特殊数据类型:2个小类

NULL(空值):只有一个值就是NULL(不能运算)

Resource(资源类型):存放资源数据(PHP外部数据:如数据库、文件)

类型转换

在很多条件下需要将当前PHP取得的数据,转换成目标数据类型

在PHP中有两种类型转换方式:自动转换,强制转换

关于类型转换用的最多的就是转布尔值(判断)和转数值(运算)

其他类型转数值说明

  • 布尔TRUE为1,FALSE为0

  • 以字母开头的字符串转数值永远为0

  • 以数字开头的字符串,取到碰到字符为止,且不会同时包含两个小数点

自动转换

系统根据需求自己判定转换

不知道为啥,字符串加字符串会报错,应该是版本或者是操作问题

但是如果是布尔值进行运算的话就会进行自动转换

强制转换

根据需要的目标类型转换,只需要在要转换的数据前添加一个要转换的类型并用括号括起来

强制类型转换就可以实现字符串与数值相加,跟规则一样:以字母开头的字符串转数值会被解析为0

以数字开头的字符串,取到碰到字符为止,且不会同时包含两个小数点

类型判断

is_类型名称(变量名)

例如:is_int() 、is_string()、is_float()这些函数用于检测变量是否为执行类型,并返回布尔值。

is_int函数返回的是布尔值,一般用作判断不能直接使用echo输出,需要使用var_dump函数进行输出

var_dump()

var_dump() 函数用于输出变量的相关信息

语法:
var_dump ( 变量名1,……,变量名n)

var_dump()函数会输出变量类型和值以及变量长度信息

gettype

函数用于获取变量的类型。得到的是该类型所对应的字符串

语法:
gettype ( 变量名)

settype

用于设定数据类型,设置成功时返回 TRUE, 失败时返回 FALSE。

语法:
settype ( 变名量,'转换的类型' )
与强制转换不同,强制转换是对输出复制的内容进行处理,不会处理实际存储的内容
settype会直接改变数据本身

单纯强制转换可以看到并不会更改原先的数据和类型

当使用settype函数后就是在原先数据的基础上直接进行类型转换

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

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

相关文章

Visual Studio调试代码教学

本篇博客主要讲解程序员最应该掌握的技能之一——调试。我个人认为&#xff0c;学习编程&#xff0c;有2件事情非常重要&#xff0c;一是画图&#xff0c;一是调试。下面我会以Visual Studio 2022为例&#xff08;VS的其他版本大同小异&#xff09;&#xff0c;演示如何调试一个…

测试开发实战项目 | 搭建Pytest接口自动化框架

一、预研背景 目前系统研发多为前后端分离&#xff0c;当后端接口研发完成后&#xff0c;可以不依赖前端界面通过接口测试提前发现问题并解决。同时由于软件迭代周期不断缩短&#xff0c;开发新功能后又担心影响原有功能&#xff0c;可以通过接口自动化进行原有功能快速回归测…

spi,iic,uart,pcie区别

一、spi SPI 是英语Serial Peripheral interface的缩写&#xff0c;顾名思义就是串行外围设备接口&#xff0c;是同步传输协议&#xff0c;特征是&#xff1a;设备有主机&#xff08;master&#xff09;和从机&#xff08;slave&#xff09;的区分&#xff0c;主机在通讯时发送…

分治与减治算法实验: 排序中减治法的程序设计

目录 前言 实验内容 实验目的 实验分析 实验过程 流程演示 写出伪代码 实验代码 代码详解 运行结果 总结 前言 本文介绍了算法实验排序中减治法的程序设计。减治法是一种常用的算法设计技术&#xff0c;它通过减少问题的规模来求解问题。减治法可以应用于排序问题&…

mysql数据库自动备份

前言 服务器中数据库的数据是最重要的东西,如果因为某些情况导致数据库数据错误,数据错乱或数据库崩溃,这时一定要及时的修复,但如果数据丢失或数据没法用了,这时就要回滚数据了,而这时就需要我们经常的备份数据库的数据 正文 一般别人都会推荐使用Navicat来备份和连接数据库…

Kafka时间轮(TimerWheel)--算法简介

一、简介 一个简单的时间轮是一个定时器任务桶的循环列表。 让u作为时间单位。尺寸为n的时间轮有n个桶&#xff0c;可以在n*u的时间间隔内保存定时器任务。每个bucket保存属于相应时间范围的计时器任务。 在开始时&#xff0c; 第一个桶保存[0&#xff0c;u&#xff09;的任务…

第7章 “字典”

1.字典简介 字典是什么&#xff1f; 解答&#xff1a;与集合类似&#xff0c;也是一种存储唯一值的数据结构&#xff0c;但它是以键值对的形式来存储。(键值对是最重要的特性)在Es6中新增了字典&#xff0c;名为Map字典的常用操作&#xff1a;增删改查 const map new Map()/…

使用PY003基于外部中断+定时器的方式实现NEC红外解码

写在前边 最近项目用到一款遥控器是38K红外载波,NEC协议的&#xff0c;找了很多帖子有看到用外部中断下降沿判断&#xff08;但可惜判定数据的方式是while在外部中断里面死等的&#xff09;&#xff0c;有看到用100us定时器定时刷来判断&#xff0c;感觉都不太适合用在我这个工…

基于MATLAB实现WSN(无线传感器网络)的LEACH(低能耗自适应集群层次结构)(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 低能耗自适应集群层次结构&#xff08;“LEACH”&#xff09;是一种基于 TDMA 的 MAC 协议&#xff0c;它与无线传感器网络 &a…

[2018.09.25][Sourceinsight]4.0配置

1 字体放大 (1)panel fonts: option,preference,colors&font (2)code fonts: option,file type options 2 修改默认字体 Alt y 3 显示行号 点击菜单栏View->Line Numbers 4 破解 https://blog.csdn.net/biubiuibiu/article/details/78044232 5 全局搜索字…

在Spring Boot微服务使用knife4j发布后端API接口

记录&#xff1a;422 场景&#xff1a;在Spring Boot微服务上&#xff0c;应用knife4j发布后端API接口&#xff0c;辅助开发与调试。 版本&#xff1a;JDK 1.8,Spring Boot 2.6.3,knife4j-3.0.3,springfox-swagger2-3.0.0。 Knife4j: 是一个集Swagger2 和 OpenAPI3为一体的增…

第三十二篇,记一次Windows下Qt使用boost的经历

Win10系统 Qt版本如下所示 Qt中使用的编译器是MinGW&#xff0c;如下图 boost版本是1.82.0 好的&#xff0c;描述一下过程&#xff1a; 按这个教程下载、编译boost&#xff0c;在boost的目录下生成了stage/lib/目录&#xff0c;然后加入到Qt工程里&#xff0c;主要是include目…

win10安装Anaconda,配置Pytorch环境

一、安装Anaconda Anaconda实际上是一个包管理器&#xff0c;可以理解为一个工具。Anaconda自带Python&#xff08;选中版本&#xff09;解释器以及其他一些数据分析与挖掘需要的模块而无需用户手动添加这些常用模块&#xff08;安装模块会出现各种错误&#xff09;。早期学Pyt…

Django个性化推荐系统,以电影为例

背景 随着科学技术发展&#xff0c;电脑已成为人们生活中必不可少的生活办公工具&#xff0c;在这样的背景下&#xff0c;网络技术被应用到各个方面&#xff0c;为了提高办公生活效率&#xff0c;网络信息技术飞速发展。在这样的背景下人类社会进入了全新的信息化的时代。电影…

flask+opencv:实时视频直播推流平台Demo

简介&#xff1a;推流&#xff0c;指的是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号传到网络的过程。网上调查、对话访谈、在线培训等内容现场发布到互联网上。利用互联网的直观、快速&#xff0c;表现形式好、内容丰富、交互性强、地域不受限制、受…

华为OD机试真题(Java),猴子爬山(100%通过+复盘思路)

一、题目描述 一天一只顽猴想去从山脚爬到山顶&#xff0c;途中经过一个有个N个台阶的阶梯&#xff0c;但是这猴子有一个习惯&#xff1a; 每一次只能跳1步或跳3步&#xff0c;试问猴子通过这个阶梯有多少种不同的跳跃方式&#xff1f; 二、输入描述 输入只有一个整数N&…

AI语音生成器是下一大安全威胁吗?

ChatGPT一经上市&#xff0c;有关监管人工智能的讨论就开始升温。任何试图遏制这种技术的做法都可能需要国际合作&#xff0c;需要我们在过去几十年来从未见过的合作程度&#xff0c;因此不太可能遏制人工智能。 人工智能是一项功能强大的技术&#xff0c;有望彻底改变我们生活…

AIGC - 生产力新工具 Bito AI

文章目录 Bito AI 是什么Bito AI 能干啥官网免费的吗&#xff1f;如何使用 Bito方式一&#xff1a;方式二&#xff1a;在这里插入图片描述方式三 Bito AI 是什么 Bito AI是继Github Copilot、Cursor、CodeWhisperer等AI智能编程产品之后发了一大AI编程工具 。 Bito是一款建立…

表情迁移 - 2D人像动起来(附带生成web服务提供api接口)

左边原图,右边是渲染后的视频文件 开源地址:https://github.com/AliaksandrSiarohin/first-order-model 官方模型下载地址(需科学上网): google-driveyandex-disk本文docker容器已自带人脸模型 若还需要行为、物品、动画等追踪模型需下载后拷贝至容器内即可使用 API请求…

Android之 Camera相机使用

一 简介 1.1 随着信息时代的发展&#xff0c;相机在我们生活中使用越来越频繁&#xff0c;也成为手机的基本配置之一。相机可以用来拍照&#xff0c;拍视频&#xff0c;人脸识别&#xff0c;视频聊天&#xff0c;扫码支付&#xff0c;监控等常见领域 不管什么场景&#xff0c…