php变量

什么叫变量?

变量可以通过变量名访问。在指令式语言中,变量通常是可变的; 这里就先这么简单理解,通过对语言的研究会更加的理解变量的其他意义。

在PHP中变量是用于存储信息的"容器":

<?php 
$x=5; 
$y=6; 
$z=$x+$y; 
echo $z; 
?>

  

与代数类似

x=5 
y=6 
z=x+y

在代数中,我们使用字母(如 x),并给它赋值(如 5)。

从上面的表达式 z=x+y ,我们可以计算出 z 的值为 11。

在 PHP 中,这些字母被称为变量


变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。

与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。

PHP 变量规则:

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)

 

PHP 没有声明变量的命令。

变量在您第一次赋值给它的时候被创建:

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

 

在上面的语句执行中,变量 txt 将保存值 Hello world!,且变量 x 将保存值 5

注释:当您赋一个文本值给变量时,请在文本值两侧加上引号。

PHP 是一门弱类型语言

在上面的实例中,我们注意到,不必向 PHP 声明该变量的数据类型。

PHP 会根据变量的值,自动把变量转换为正确的数据类型。

在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。

PHP 变量作用域

变量的作用域是脚本中变量可被引用/使用的部分。

PHP 有四种不同的变量作用域:

  • local     局部的
  • global     全局
  • static     静态的(作用域)
  • parameter    参数(作用域)

什么是作用域?

      作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。

局部和全局作用域

在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。

在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问:

<?php 
$x=5; // 全局变量 function myTest() 
{ $y=10; // 局部变量 echo "<p>Test variables inside the function:<p>"; echo "Variable x is: $x"; echo "<br>"; echo "Variable y is: $y"; 
} myTest(); echo "<p>Test variables outside the function:<p>"; 
echo "Variable x is: $x"; 
echo "<br>"; 
echo "Variable y is: $y"; 
?>

  这里的结果:

Test variables inside the function:Variable x is: 
Variable y is: 10Test variables outside the function:Variable x is: 5
Variable y is:

  


在以上实例中 myTest() 函数定义了 $x 和 $y 变量。 $x 变量在函数外声明,所以它是全局变量 , $y 变量在函数内声明所以它是局部变量。

当我们调用myTest()函数并输出两个变量的值, 函数将会输出局部变量 $y 的值,但是不能输出 $x 的值,因为 $x 变量在函数外定义,无法在函数内使用,如果要在一个函数中访问一个全局变量,需要使用 global 关键字。

然后我们在myTest()函数外输出两个变量的值,函数将会输出全局部变量 $x 的值,但是不能输出 $y 的值,因为 $y 变量在函数中定义,属于局部变量。


global 关键字

global 关键字用于函数内访问全局变量。

在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:

<?php 
$x=5; 
$y=10; function myTest() 
{ 
global $x,$y; 
$y=$x+$y; 
} myTest(); 
echo $y; // 输出 15 
?>

PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

上面的实例可以写成这样:

<?php 
$x=5; 
$y=10; function myTest() 
{ 
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; 
} myTest(); 
echo $y; //这里的结果同样为 15
?>

  

static 作用域

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。

要做到这一点,请在您第一次声明变量时使用 static 关键字:

<?php function myTest() 
{ 
static $x=0; 
echo $x; 
$x++; //表示+1
} myTest(); 
myTest(); 
myTest(); ?>

  

这里的结果:
0
1
2
3
4

  当你再调用函数myTest()的时候结果为 5。

然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。

注释该变量仍然是函数的局部变量。

参数作用域

参数是通过调用代码将值传递给函数的局部变量。

参数是在参数列表中声明的,作为函数声明的一部分:

<?php function myTest($x) 
{ 
echo $x; 
} myTest(5); ?>

  这里就是函数引用了参数 $x ,在调用函数时 5 就是那个参数 $x.

默认情况下,函数参数通过值传递(因而即使在函数内部改变参数的值,它并不会改变函数外部的值)。如果希望允许函数修改它的参数值,必须通过引用传递参数。

如果想要函数的一个参数总是通过引用传递,可以在函数定义中该参数的前面加上符号 &:

<?php
function add_some_extra(&$string)
{$string .= 'and something extra.';  //等号前面的.是PHP语言的一种简写方式,左边的等式也可写为 $string = $string.'and someting extra';
}
$str = 'This is a string, ';
add_some_extra($str);
echo $str;    // 结果: 'This is a string, and something extra.'
?>

  

关于变量这块就写这么多了,368711665 这个是我自己建的群,希望大家可以共同学习讨论

转载于:https://www.cnblogs.com/average/p/7922658.html

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

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

相关文章

js将base64做UrlEncode转码

使用 encodeURIComponent() 其详细介绍 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent var base64 &#xff08;base64值&#xff09;encodeURIComponent(base64 ) //转化 转载于:https://www.cnblogs.com/xll-qg/p…

引用自己创建的css样式表_如何使用CSS创建联系表

引用自己创建的css样式表First we create the HTML elements - input fields for First Name, Last Name, Email and a Text Area for the message.首先&#xff0c;我们创建HTML元素-名字&#xff0c;姓氏&#xff0c;电子邮件和消息的文本区域的输入字段。 Later we apply C…

leetcode 1449. 数位成本和为目标值的最大数字(dp)

这是我参与更文挑战的第12天 &#xff0c;活动详情查看更文挑战 题目 给你一个整数数组 cost 和一个整数 target 。请你返回满足如下规则可以得到的 最大 整数&#xff1a; 给当前结果添加一个数位&#xff08;i 1&#xff09;的成本为 cost[i] &#xff08;cost 数组下标…

风能matlab仿真_风能产量预测—深度学习项目

风能matlab仿真DL DATATHON- AI4ImpactDL DATATHON- AI4影响 Published by Team AI Traders — Suyash Lohia, Nguyen Khoi Phan, Nikunj Taneja, Naman Agarwal and Mihir GuptaAI交易员团队发布 -Suyash Lohia&#xff0c;Nguyen Khoi Phan&#xff0c;Nikonj Taneja&#x…

android JNI调用(Android Studio 3.0.1)(转)

最近回头复习了一下android 的jni调用&#xff0c;却发现按以前的方法调用失败&#xff0c;一怒之下就重新摸索&#xff0c;碰了几次壁&#xff0c;发现网上好多教程都不能成功调用&#xff0c;于是记录一下现在AS版本成功好用的调用方法。 这里设定你的ndk已经下载并且设置没问…

安卓源码 代号,标签和内部版本号

SetupSecurityPortingTuningCompatibilityReference转到源代码Getting Started OverviewCodelines, Branches, and ReleasesCodenames, Tags, and Build NumbersProject RolesBrand GuidelinesLicensesFAQSite UpdatesDownloading and Building RequirementsEstablishing a Bui…

git 列出标签_Git标签介绍:如何在Git中列出,创建,删除和显示标签

git 列出标签Tagging lets developers mark important checkpoints in the course of their projects development. For instance, software release versions can be tagged. (Ex: v1.3.2) It essentially allows you to give a commit a special name(tag).通过标记&#xff…

leetcode 278. 第一个错误的版本(二分)

题目 你是产品经理&#xff0c;目前正在带领一个团队开发新的产品。不幸的是&#xff0c;你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的&#xff0c;所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, …, n]&#xff0c;你想找…

腾讯哈勃_用Python的黑客统计资料重新审视哈勃定律

腾讯哈勃Simple OLS Regression, Pairs Bootstrap Resampling, and Hypothesis Testing to observe the effect of Hubble’s Law in Python.通过简单的OLS回归&#xff0c;配对Bootstrap重采样和假设检验来观察哈勃定律在Python中的效果。 In this post, we will revisit Hub…

JAVA中动态编译的简单使用

一、引用库 pom文件中申明如下&#xff1a; <dependencies><!-- https://mvnrepository.com/artifact/junit/junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><…

程序员实用小程序_我从阅读《实用程序员》中学到了什么

程序员实用小程序In short: old but gold.简而言之&#xff1a;古老而又黄金。 Published in 1999, The Pragmatic Programmer is a book about how to become a Pragmatic Programmer. Which really means a ‘Good Programmer’. 《实用程序员》于1999年出版&#xff0c;是一…

leetcode 5786. 可移除字符的最大数目(二分法)

题目 给你两个字符串 s 和 p &#xff0c;其中 p 是 s 的一个 子序列 。同时&#xff0c;给你一个元素 互不相同 且下标 从 0 开始 计数的整数数组 removable &#xff0c;该数组是 s 中下标的一个子集&#xff08;s 的下标也 从 0 开始 计数&#xff09;。 请你找出一个整数…

如何使用Picterra的地理空间平台分析卫星图像

From April-May 2020, Sentinel-Hub had organized the third edition of their custom script competition. The competition was organized in collaboration with the Copernicus EU Earth Observation programme, the European Space Agency and AI4EO consortium.从2020年…

df -l查看本地文件系统

df -l, --locallimit listing to local file systems 转载于:https://www.cnblogs.com/jonathanyue/p/9301222.html

在Packet Tracer中路由器静态路由配置

实验目标&#xff1a;<1>掌握静态路由的配置方法和技巧<2>掌握通过静态路由方式实现网络的连通性<3>熟悉广域网线缆的链接方式技术原理&#xff1a;<1>路由器属于网络层设备&#xff0c;能够根据IP包头的信息&#xff0c;选择一条最佳路径&#xff0c;…

python示例_带有示例的Python功能指南

python示例Python函数简介 (Introduction to Functions in Python) A function allows you to define a reusable block of code that can be executed many times within your program.函数允许您定义一个可重用的代码块&#xff0c;该代码块可以在程序中多次执行。 Function…

leetcode 852. 山脉数组的峰顶索引(二分查找)

题目 符合下列属性的数组 arr 称为 山脉数组 &#xff1a; arr.length > 3 存在 i&#xff08;0 < i < arr.length - 1&#xff09;使得&#xff1a; arr[0] < arr[1] < … arr[i-1] < arr[i] arr[i] > arr[i1] > … > arr[arr.length - 1] 给你由…

hopper_如何利用卫星收集的遥感数据轻松对蚱hopper中的站点进行建模

hopper建筑学与数据科学 (Architectonics and Data Science) Understanding the site and topography are crucial first step of any architectural project. Site modelling can become very daunting, expensive, or just cumbersome, often having to use various software…

Git 仓库代码迁移步骤记录

迁移远程仓库 // 克隆旧仓库镜像 git clone --mirror [oldRepoUrl]// 添加新仓库地址 cd the_repo git remote add [remoteName] [newRepoUrl]// 推到新的远程库 git push -f --tags [remoteName] refs/heads/*:refs/heads/* 复制代码中括号中的名称需根据自己项目需求替换 更新…

TensorFlow MNIST 入门 代码

其实就是按照TensorFlow中文教程的内容一步步跟着敲的代码。 不过在运行代码的时候遇到代码中加载不到MNIST数据资源&#xff0c;似乎是被墙了&#xff08;(⊙﹏⊙)b&#xff09; 于是自己手动下载了数据包&#xff0c;放到 MNIST_data/ 文件夹下&#xff0c;代码就能正常运转了…