·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> 前端学PHP之变量、数据类型及作用域

前端学PHP之变量、数据类型及作用域

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
目录
[1]变量 变量定义 变量赋值 [2]数据类型 字符串 整数 浮点数 布尔型 数组 对象 NULL 资源 [3]作用域 global static

变量

变量定义

  变量是存储信息的容器,以$符号开头,其后是变量名称。变量名称必须以字母或下划线开头,对大小写敏感

<?php
$x=5;
//5
echo $x;
//什么都不输出
echo $X;
?>

 

变量赋值

  PHP没有创建变量的命令,变量会在首次为其赋值时被创建

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

 

数据类型

  PHP是一门类型松散的语言,不必告知PHP变量的数据类型,PHP会根据它的值,自动把变量转换成正确的数据类型。PHP数据类型包括8种:其中包括四种标量类型、两种复合类型和两种特殊类型。具体是:字符串、整数、浮点数、布尔、数组、对象、NULL、资源

  [注意]var_dump() 会返回变量的数据类型和值

 

字符串

  字符串可以是引号内的任何文本,引号可以是单引号或双引号

<?php 
$x = "Hello world!";
//Hello world!
echo $x;
echo "<br>"; 
$x = 'Hello world!';
//Hello world!
echo $x;
?>

<情况1>当字符串中包含引号,有三种解决方案:

  [1]单引号中嵌入双引号

  [2]双引号中嵌入单引号

  [3]使用转义符"\"

<?php 
$str_string1 = '"test"';
$str_string2 = "'test'";
$str_string3 = '\'test\'';
echo $str_string1;
echo "<br />";
echo $str_string2;
echo "<br />";
echo $str_string3;
?>

<情况2>当字符串的引号遇到变量,分为两种情况:

  [1]当双引号中包含变量时,变量会与双引号中的内容连接在一起

  [2]当单引号中包含变量时,变量会被当作字符串输出

<?php 
$test = 1;
$str_string1 = ' $test ';
$str_string2 = " $test ";
$str_string3 = ' "$test" ';
$str_string4 = " '$test' ";
echo $str_string1;//$test
echo "<br />";
echo $str_string2;//1
echo "<br />";
echo $str_string3;//"$test"
echo "<br />";
echo $str_string4;//'1'
?>

<情况3>当字符串很长时,使用Heredoc结构形式的方法,首先定界符表示字符串(<<<),接着在(<<<)之后提供一个标识符(任意名称),换行后是字符串,最后以这个标识符结束字符串。注意标识符左右不要有多余的空格

<?php 
$str = <<< G
123
G;
echo $str;//123
?>

 

整数

  PHP整数必须至少有一个数字,不能包含逗号或空格,不能有小数点,正负均可,可以用三种格式规定整数:十进制、十六进制(前缀是0x)或八进制(前缀是0)

<?php 
$x = 5985;
//int(5985)
var_dump($x);
echo "<br>"; 
$x = -345; 
// int(-345)
var_dump($x);
echo "<br>"; 
$x = 0x11; 
// int(17)
var_dump($x);
echo "<br>";
$x = 011; 
// int(9)
var_dump($x);
?>

 

浮点数

  PHP浮点数是有小数点或指数形式的数字

<?php 
$x = 10.365;
//float(10.365)
var_dump($x);
echo "<br>"; 
$x = 2.4e3;
//float(2400)
var_dump($x);
echo "<br>"; 
$x = 8E-1;
//float(0.8)
var_dump($x);
?>

 

布尔型

  PHP布尔型只有两个值:true或false(不区分大小写),常用于条件测试。当用echo指令输出布尔类型时,如果是true,则输出"1",false则什么都不输出

<?php 
    $man = "男";
    $flag = $man == "男";//输出1
    echo $flag ;
    echo "<br />" ;
    $flag = $man == "女";//什么都不输出
    echo $flag;
    var_dump($flag);//bool(false)
?>

 

数组

  PHP数组可以在一个变量中存储多个值

<?php 
$cars=array("Volvo","BMW","SAAB");
//array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(4) "SAAB" }
var_dump($cars);
?>

 

对象

  PHP对象是存储数据和有关如何处理数据的信息的数据类型。在PHP中,必须明确地声明对象,但首先必须声明对象的类。对此,使用class关键词,类是包含属性和方法的结构。然后在对象类中定义数据类型,然后在该类的实例中使用此数据类型

<?php
class Car
{
    var $color;
    function Car($color="green") {
      $this->color = $color;
    }
    function what_color() {
      return $this->color;
    }
}

function PRint_vars($obj) {
   foreach (get_object_vars($obj) as $prop => $val) {
     echo "\t$prop = $val\n";
   }
}

$herbie = new Car("white");
echo "\herbie: Properties\n";
print_vars($herbie);
?>

 

NULL

  PHP中的NULL是空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,当被赋值为NULL,或者尚未被赋值,或者被unset(),这三种情况下变量被认为为NULL

<?php 
 error_reporting(0); //禁止显示PHP警告提示
 $var;
 var_dump($var);//NULL
 $var1 = null;
 var_dump($var1);//NULL
 $var2 = NULL;
 var_dump( $var2);//NULL
 $var3 = "节日快乐!";
 unset($var3);
 var_dump($var3);//NULL
?>

 

资源

  PHP资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布。可以对资源进行操作(创建、使用和释放)。任何资源,在不需要的时候应该被及时释放。如果我们忘记了释放资源,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽

<?php
$file=fopen("data/webroot/resource/f.txt","r");   //打开文件
$con=MySQL_connect("127.0.0.1","root","root");  //连接数据库
if ($file_handle){
    //接着采用while循环(后面语言结构语句中的循环结构会详细介绍)一行行地读取文件,然后输出每行的文字
    while (!feof($file_handle)) { //判断是否到最后一行
        $line = fgets($file_handle); //读取一行文本
        echo $line; //输出一行文本
        echo "<br />"; //换行
    }
}
fclose($file_handle);//关闭文件
?>

 

  [注意]memory_get_usage() 会获取当前PHP消耗的内存,单位为byte

<?php 
echo $m1 = memory_get_usage(); 
echo "<br />";
$var_string = '123';//320
echo $m2 = memory_get_usage()-$m1; 
echo "<br />";
$n = 123;//272
echo $m3 = memory_get_usage()-$m1-$m2; 
echo "<br />";
$f = 123.00;//272
echo $m4 = memory_get_usage()-$m1-$m2-$m3; 
echo "<br />";
$var_array = array('123');//576
echo $m5 = memory_get_usage()-$m1-$m2-$m3-$m4; 
?>
<?php 
  $string = "就是就是";
 var_dump($string);//string(12) "就是就是"
 echo "<br />";
 $string = 9494;
 var_dump($string);//int(9494)
  echo "<br />";
?>

 

作用域

  PHP有三种不同的变量作用域:local(局部)、global(全局)、static(静态)

  函数之外声明的变量有global作用域,只能在函数以外进行访问;函数内部声明的变量有local作用域,只能在函数内部进行访问

<?php
error_reporting(0); //禁止显示PHP警告提示
$x=5; // 全局作用域

function myTest() {
  $y=10; // 局部作用域
  echo "<p>测试函数内部的变量:</p>";
  echo "变量 x 是:$x<br>";
  echo "变量 y 是:$y";
} 
//无输出
//10
myTest();
echo "<p>测试函数之外的变量:</p>";
echo "变量 x 是:$x<br>";//5
echo "变量 y 是:$y";//无输出
?>

 

global关键词

  用于访问函数内的全局变量

<?php
$x=5;
$y=10;

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

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

  PHP同时在名为GLOBALS[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++;
}

myTest();//0
echo "<br>";
myTest();//1
echo "<br>";
myTest();//2
echo "<br>";
myTest();//3
echo "<br>";
myTest();//4
?>