php变量

1.变量的定义:a.变量必须以$符号开始,注意这里$符号并不属于变量的名称,即$+变量名称

       b.变量名称必须以字母或者下划线开始。

       c.变量中只能含有字母数字以及下划线;

       d.变量名区分大小写。

2.变量的创建:a.注意在php中,变量类型是不需要声明的,即不存在c或c++中的int a; string str;之类的

        $x=5;//php会默认为整形

        $y=0.5;//默认为浮点型

        $str="hello";//默认为字符串型

       b.当然我们也可以对变量进行一些运算,对于同种类型的话,结果自然便是同种类型,但是如果不同类型?

       比如:<?php    $x=3.5;  $y=2;   $z=$x+$y;  echo $z; ?>那么会输出5.5,即整形与浮点型运算,会得到浮点型。

          <?php $x="5.5";  $y=2;  $z=$x+$y;  echo $z; ?> 你会惊奇地发现还是7.5

          <?php $x="abc";  $y=2;  $z=$x+$y;  echo $z; ?> 但这种情况的话,输出的结果为2,即这里会将$x变量默认为0

        c.变量类型的转换:常用的类型有整型:int 浮点型: double float real 字符串:string 布尔:bool boolean 数组:array 对象:object

         转换方法:(1)用括号括起类型:如<?php $x=2.5; $y=(int)$x;?>那么会输出2;

              (2)使用转换函数:intval(),float(),strval();如:$str="145.465abc"; $x=intval($str); $y=floatval($str); 那么分别会得到145和145.465;

              (3)使用settype()函数,如: $x=10.0;$y=settype($x,"int"); $z=settype($x,"bool"); 那么分别会得到10和true值。

3.全局变量:所有函数外中定义的变量,除了函数外,可以被任何脚本中的任何部分访问,但对于在函数内要访问全局变量,需要使用global关键字。我们先看个例子:

<?php
$x=10;
$y=5;
function test(){
$z=3;
global $x;
echo "<p>测试函数内变量</p>";
echo "变量x为: $x </br>";
echo "变量y为: $y </br>";
echo "变量z为:$z";
}

test();

echo "<p>测试函数外变量</p>";
echo "变量x为: $x </br>";
echo "变量y为: $y </br>";
echo "变量z为:$z";
?>

然后我们运行下,结果如下:

我们会发现存在乱码问题,并且存在两个notice,表示两个变量为定义。

我们先来解决乱码问题,其实乱码的根本原因是我们输出了中文,而我们又没有去定义字符编码。

php中文乱码问题解决办法一:

<meta charset="utf-8">//定义字符编码
<?php  上面的php文件内容  ?>

php中文乱码问题解决办法二:

<?php header("Content-Type:text/html;charset=utf8");//在php文件内部定义字符编码

?>

按照上述方法解决乱码问题后,我们可以得到以下结果:

我们会发现在test函数内的$y并没有输出,原因很简单,$y是个全局变量,而在函数内,没有用global定义,$z没有输出是因为$z是在函数内声明的,属于局部变量。

我们再看个例子:

<?php
header("Content-Type:text/html;charset=utf8");
$x=10;
$y=5;
function test(){
$z=3;
$x=5;
global $y;
echo "<p>测试函数内变量</p>";
echo "变量x为: $x </br>";
echo "变量y为: $y </br>";
echo "变量z为:$z";
}

test();

$x=1;
$z=5;
echo "<p>测试函数外变量</p>";
echo "变量x为: $x </br>";
echo "变量y为: $y </br>";
echo "变量z为:$z";
?>

结果如下:

我们在全局变量定义了$x,然后在函数内同样也声明了个$x,我们发现其实这样是兼容的,同理,$z也是如此。而且全局变量$x在脚本中也是可以重新被赋值的,但要注意一点的就是如果全局变量在函数内定义是不能赋值的,如:global $x=1;这样是会报错的。

4.global关键字:上面我们已经谈过,在函数内使用全局变量的话,要用global,实际上php把所有的全局变量都存储在一个名为$GLOBALS[index]的数组中,index为变量的名称,所以如果我们要在函数内访问全局变量的话,也可以用$GLOBALS数组,如下:

<?php
header("Content-Type:text/html;charset=utf8");
$x=10;
$y=5;
function test(){
$z=$GLOBALS['x']+$GLOBALS['y'];
echo "<p>测试函数内变量</p>";
echo "变量z为: $z </br>";
}
test();
?>

结果如下:

5.static作用域:当一个函数完成时,通常其函数内的变量都会被删除,而如果变量前加了static关键字的话,我们每次调用函数时,该变量会保存为前一次函数被调用时的值。

<?php
header("Content-Type:text/html;charset=utf8");
function test(){
static $x=0;
$x++;
echo "$x<br>";
}
test();
test();
test();
?>

结果为:1 2 3,原因很简单,因为$x被static声明后,保留的是上一次函数调用的值,而不会重新被赋值为0;

 

转载于:https://www.cnblogs.com/xy95/p/5789467.html

php入门第二篇---变量相关推荐

  1. ElasticSearch入门 第二篇:集群配置

    这是ElasticSearch 2.4 版本系列的第二篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  2. Redis入门第二篇【存储数据结构之string类型】

    tags: Redis title: Redis入门第二篇[存储数据结构之string类型] Redis存储的数据结构 Redis支持的数据结构有好几种: It supports data struc ...

  3. python语法讲解小白入门第二篇

    今天继续为大家分享下自己学习python3总结的语法笔记,专为python小白量身打造,如果你喜欢可以点个关注哦!如果你是刚入门的python小白的话,建议你从第一篇开始学起,这样才能效果更好一些,点 ...

  4. Hive入门第二篇之hive的安装部署(详细教程)

    第一种方式: derby版hive (不推荐) 默认使用derby(数据库)维护元数据此版本,每个节点自己独立维护一个derby数据库,所以在节点1添加了数据库,在节点2 无法查看第一步:查看系统自带 ...

  5. Avalonia跨平台入门第二篇

    前面一篇简单的弄了个Demo去玩耍了一下Avalonia;你还别说效还挺有意思,这不咱们今天接着更深一步的去了解他,来看看效果: 在统信UOS下运行效果: 环境搭建在统信UOS(多一步开启开发模式): ...

  6. ctf wav文件头损坏_【CTF入门第二篇】南邮CTF web题目总结

    这几天写了南邮的web题目,都比较基础,但是对我这个小白来说还是收获蛮大的.可以借此总结一下web题的类型 一,信息都藏在哪 作为ctf题目,肯定是要有些提示的,这些提示有时会在题目介绍里说有时也会隐 ...

  7. WPF入门第二篇 MVVM与Binding

    MVVM与Binding MVVM,即Model-View-ViewModel的首字母缩写,在这种开发模式下常用binding来对View和ViewModel进行绑定. 添加三个文件夹,分别命名为Mo ...

  8. Springcloud入门第二篇

    生产者消费者注册以及调用演示 基础的创建请看我的上一篇文章 再创建两个model order和user order依赖 <dependencies><dependency>&l ...

  9. ElasticSearch入门 第一篇:Windows下安装ElasticSearch

    这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

最新文章

  1. linux驱动:TI+DM8127+GPIO(一)之应用——报警输入输出
  2. dnf超时空漩涡副本路线流程图_DNF超时空漩涡真的不难,掌握这些技巧和打法,自己开团当团长!...
  3. Redis RDB文件格式全解析
  4. uvalive4840(n*n方阵的最小花费)
  5. 2020-10-13 四元数用法(不讲原理,只讲计算规则)
  6. ALTER 简单操作(mysql)
  7. 试用期间,云服务器操作系统可以更换吗?
  8. iptables端口转发
  9. UE4实时渲染需要注意的点——RTR(Real Time Rendering)
  10. 【JS】常用效果总结
  11. java毕业生设计学籍管理系统计算机源码+系统+mysql+调试部署+lw
  12. monitorServer IBM Tivoli Enterprise Monitor Server
  13. Java网络 1.3 开发工具介绍
  14. 通读《C++ primer plus》— C++中的5种数据类型转换方式
  15. Linux:以K、M、G查看文件大小;
  16. swagger no content
  17. 美国盗版党(Pirate Party)
  18. java太臃肿_Java简洁开发技巧,减少繁琐臃肿的代码
  19. 卷积神经网络模型部署到移动设备
  20. python开发购物网站_python实现简单购物商城

热门文章

  1. mysql 查看当前使用的配置文件my.cnf的方法
  2. R中因子分析的得分计算
  3. 关于马尔科夫随机场MRF的思考
  4. 分位数回归的R语言实现
  5. 高频交易的思路模型简介
  6. 用数据追女神:追女生如同创业
  7. 安卓上传文件时修改文件名称_使用mmv命令批量修改文件名称
  8. php无法查询excel数据,laravel phpexcel无法读取excel中中文表头列数据
  9. 2012.4.20总结
  10. python解析http数据包_python 3 处理HTTP 请求的包