麻花痒 发表于 2025-4-7 20:07:17

PHP基础二【变量/输出/数据范例/常量/字符串/运算符】

1. PHP变量

1. 我们来看一个实例:
<?php
    $x = 5;
    $y = 6;
    $z = $x + $y;
    echo $z;        // echo 是输出,先照着敲
?>


[*] 我们把5赋值给变量x,把6赋值给变量6,把x+y的值,赋值给变量z,末了输出z的值。
[*] 在PHP中,变量用$开头创建,表现这个$后的东西是变量。
2. PHP变量规则:


[*]1)变量以 $ 符号开始,后面跟着变量的名称。
[*]2)变量名必须以字母大概下划线字符开始。
[*]3)变量名只能包罗字母、数字以及下划线(A-z、0-9 和 _ )。
[*]4)变量名不能包罗空格。
[*]5)变量名是区分巨细写的(y 和 Y 是两个差别的变量)。
3. 创建PHP变量:


[*] PHP没有声明变量的下令,变量在第一次给它赋值时即被创建。就是不能单写$x;而不给x赋值,要写就写$x = 7给它一个值(7只是随便一个数)。
[*] 将字符串内容赋值给变量时,请加上双引号:
<?php
        $x = "hello world";
?>
4. PHP是一门弱范例语言:


[*] 在上面的例子中,我们不难发现,在给变量赋值时,不需要指定变量的数据范例,编译器会根据所给的值自行判定。
[*] 在强范例的编程语言中,我们必须在使用变量前先声明(定义)变量的范例和名称。例C语言:
int main()
{
        int x = 12; // 给变量x赋值时必须指定变量x的数据类型为int
        return 0;
}
5. PHP变量作用域:


[*] 作用域是指变量在脚本中可被引用,使用的范围。
[*] PHP有4中差别的作用域:local,global,static,parameter。
1)局部和全局作用域:


[*] 在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问(先创建,再访问),要在一个函数中访问一个全局变量,需要使用 global 关键字。
[*] 在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问。
[*] 测试代码:
<?php
    $x=5; // 全局变量

    function myTest()
    {
      $y=10; // 局部变量
      global $x;        // 加关键字global
      echo "<p>测试函数内变量:<p>";
      echo "变量 x 为: $x";        // 可以访问,需要加关键字global
      echo "<br>";
      echo "变量 y 为: $y";
    }

    myTest();

    echo "<p>测试函数外变量:<p>";
    echo "变量 x 为: $x";        // 可以访问
    echo "<br>";
    echo "变量 y 为: $y";        // 无法访问
?>


[*]表现结果:
测试函数内变量:

变量 x 为: 5
变量 y 为: 10

测试函数外变量:

变量 x 为: 5
变量 y 为:


[*] 上面的代码中,x在所有函数外部定义,是全局变量。在函数内部访问x时,需要加关键字global声明。y是局部变量,可以在myTest函数里使用,而不能在函数外使用。
[*] 你可以在差别函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。
[*] global 关键字用于函数内访问全局变量。在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 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;
       
    echo $GLOBALS['y'];                // 输出10
    echo "<br>";

        function myTest()
        {
                $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
        }
       
        myTest();
        echo $y;        // 输出15

    echo "<br>";
    $GLOBALS['y'] = 9; // 改变y
    echo $y;
?>


[*]表现结果:
10
15
9
2)static作用域:


[*]局部变量在出函数时需要被销毁,但是有时间我们不想让这个变量销毁,就需要使用static关键字,在第一次声明时使用这个关键字:
<?php
        function myTest()
        {
                static $x=0;    // static修饰
                echo $x;
                $x++;
                echo "<br>"; // 换行符
        }

        myTest();
        myTest();
        myTest();
?>


[*]表现结果:
0
1
2


[*] x不停++,没有被销毁。每一次使用x时,x仍然保持原来的值。
[*] 注意:x仍然是局部变量,不能在作用域之外使用。
5. 参数作用域:


[*]跟C语言中的传参差不多,但是不消写明形参的数据范例:
<?php
        function myTest($x)
        {
                echo $x;
        }

        myTest(5);
?>
2. PHP输出

1. echo和print的区别:


[*]echo可以输出一个或多个字符串。
[*]print只能输出一个字符串。
   注意:echo的输出速率比print快,echo没有返回值,而print的返回值总为1。
2. echo语句:


[*]echo在使用时可以加上括号,也可以不加:
<?php
        echo "1111";        // 加括号
        echo("18290");        // 不加括号
?>


[*]echo可以输出多个差别范例的参数:(而且输出多个参数时不能使用括号)
<?php
        echo("127".".0."."0.1"); // 中间用 . 隔开
    echo "<br>";

    echo "hello "."world";        // 中间用 . 隔开
        echo "<br>";
       
        $a = 1;
    $b = 2;
       
        // 也可以用,隔开
    echo $a," ",$b;        // 可以跑,有整型类型和字符串类型
    echo($a, $b);        // 报错
?>


[*]表现结果:
127.0.0.1
hello world
1 2


[*]输出变量:
<head>
    <meta charset="UTF-8">        // HTML标签部分
</head>               
<?php
    // 创建变量
    $txt1="学习 PHP";
    $txt2="我的博客";
    $cars=array("Volvo","BMW","Toyota");    // 数组,后面介绍

    echo $txt1;
    echo "<br>";

    echo "在 $txt2 学习 PHP ";
    echo "<br>";

    echo "我车的品牌是 {$cars}";
?>


[*]表现结果:
学习 PHP
在 我的博客 学习 PHP
我车的品牌是 Volvo
3. print语句:


[*]print在使用时和echo相似,加不加括号都可以:
<head>
        <meta charset="UTF-8">
</head>
<?php
        print "<h2>PHP 很有趣!</h2>";        // 可以不加括号
        print "Hello world!<br>";
        print "我要学习 PHP!";
        //或者
        print("PHP是全世界最好的语言");        // 可以加括号
?>


[*]print不能一次输出多个参数:
<?php
        $a = "1";
        $b = "2";
        print $a,$b;         // 报错
?>


[*]print表现变量:
<?php
        $txt1="hello world";
        $txt2="CSDN";
        $cars=array("zhangsan","lisi","wangwu");

        print $txt1;
        print "<br>";

        print "在 $txt2 学习 PHP ";
        print "<br>";

        print "人 {$cars}";
        print "<br>";

        print "hello "."world";// 这不叫多个类型参数,. 是字符串连接符
?>


[*]表现结果:
hello world
在 CSDN 学习 PHP
人 zhangsan
hello world
3. EOF使用阐明:


[*]PHP EOF(heredoc)是一种在下令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和步调语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。

[*]必须末了接分号,否则编译通不过。
[*]EOF可以用任意别的字符代替,只需保证结束标识与开始标识一致。
[*]结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
[*]开始标识可以不带引号或带单双引号,不带引号与带双引号结果一致,解释内嵌的变量和转义符号;带单引号则不解释内嵌的变量和转义符号。
[*]当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,自己对单双引号转义。

<head>
    <meta charset="UTF-8">
</head>
<?php
        $a = 1;

        echo <<<EOF
      "$a""hello"<br>
      我的第一个标题<br>
      我的第一个段落
        EOF;
// 结束需要独立一行且前后不能空格
?>


[*]表现结果:
"1""hello"
我的第一个标题
我的第一个段落


[*]注意:

[*]以 <<<EOF 开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号。
[*]开始标记和结束标记相同,好比常用大写的 EOT、EOD、EOF 来表现,但是不光限于那几个,只要保证开始标记和结束标记不在正文中出现即可。
[*]位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用毗连符.或,来拼接。

4. 其他输出函数


[*]print_r:打印关于变量的易于明白的信息,假如给出的是 string、integer 或 float,将打印变量值自己。假如给出的是 array,将会按照一定格式表现键和元素。
[*]var_dump:此函数表现关于一个或多个表达式的结构信息,包罗表达式的范例与值。数组将递归睁开值,通过缩进表现其结构。
[*]var_dump 和 print_r 的区别:var_dump 返回表达式的范例与值,而 print_r 仅返回结果,相比调试代码使用 var_dump 更便于阅读。
<head>
    <meta charset="UTF-8">
</head>
<?php
        $n = 10;
        $a=array("Volvo", $n,"Toyota");

        echo $a;
        echo "</br>";
        print $a;
        echo "</br>";
        print_r($a);    // 必须带()
        echo "</br>";
        var_dump($a);   // 必须带()
?>


[*]表现结果
Array
Array
Array ( => Volvo => 10 => Toyota )
array(3) { => string(5) "Volvo" => int(10) => string(6) "Toyota" }
3. 数据范例

PHP 支持以下几种数据范例:


[*]String(字符串)
[*]Integer(整型)
[*]Float(浮点型)
[*]Boolean(布尔型)
[*]Array(数组)
[*]Object(对象)
[*]NULL
(空值)(“”、0、NULL

[*]Resource(资源范例)(图片、文件)
3.1 字符串

1. 定义字符串


[*]可以将任何文本放在单引号和双引号中,表现一个字符串
<?php
    $x = "Hello world!";
    var_dump($x);
    echo "<br>";
    $x = 'Hello world!';
    var_dump($x);
?>


[*]表现结果:
string(12) "Hello world!"
string(12) "Hello world!"
2. 字符串并置运算符 .


[*]并置运算符.用于把两个字符串值毗连起来:
<?php
    $txt1="Hello world!";
    $txt2="What a nice day!";
    echo $txt1." ".$txt2;
?>


[*]表现结果:
Hello world! What a nice day!
3.2 整型

1. 整型规则


[*]整型必须至少有一个数字(0~9);
[*]整型不能包罗逗号或空格;
[*]整型是没有小数点的;
[*]整型可以是正数或负数;
[*]整型可以用三种格式来指定:十进制, 十六进制(以 0x 为前缀)或八进制(前缀为 0)。
2. 代码示例
<?php
    $x = 5985;
    var_dump($x);
    echo "<br>";
    $x = -345; // 负数
    var_dump($x);
    echo "<br>";
    $x = 0x8C; // 十六进制数
    var_dump($x);
    echo "<br>";
    $x = 047; // 八进制数
    var_dump($x);
?>


[*]表现结果:
int(5985)
int(-345)
int(140)
int(39)
3.3 浮点型

浮点数是带小数部分的数字,或是指数情势
<?php
    $x = 10.365;
    var_dump($x);
    echo "<br>";
    $x = 2.4e3;   // 2.4 * 10^3
    var_dump($x);
    echo "<br>";
    $x = 8E-5;      // 8 * 10^-5
    var_dump($x);
?>
表现结果:
float(10.365)
float(2400)
float(8.0E-5)
3.4 布尔型

布尔型可以是true或false,通常用于条件判定。
<?php
    $x=true;
    $y=false;
    var_dump($x,$y);
?>
表现结果:
bool(true) bool(false)
3.5 数组

数组可以在一个变量中存储多个值。和其他语言一样,可以通过下标访问。
1. 索引数组
<?php
    // 创建索引数组
    $fruits = array("Apple", "Banana", "Orange");
    // 或简写形式(PHP 5.4+)
    $fruits = ["Apple", "Banana", "Orange"];

    // 访问元素
    echo $fruits."</br>"; // 输出: Apple

    // 添加元素
    $fruits[] = "Mango"; // 自动添加到最后
    $fruits = "Grape"; // 指定索引

    // 遍历数组
    foreach ($fruits as $fruit) {
      echo $fruit . "</br>";
    }
?>


[*]表现结果:
string(5) "Apple"
string(5) "Apple"
string(6) "Banana"
bool(true)
string(5) "Grape"
2. 关联数组
<?php
    // 创建关联数组
    $person = array(
      "name" => "John",
      "age" => 30,
      "city" => "New York"
    );
    // 或简写形式
    $person = [
      "name" => "John",
      "age" => 30,
      "city" => "New York"
    ];

    // 访问元素
    var_dump($person["name"]); // 输出: John
    echo "</br>";

    // 添加/修改元素
    $person["email"] = "john@example.com";

    // 遍历数组
    foreach ($person as $key => $value) {
      echo "$key: $value"."</br>";
    }
?>


[*]表现结果:
string(4) "John"
name: John
age: 30
city: New York
email: john@example.com
   这里数组的遍历方式后面会讲到。
3.6 对象

起首,你必须使用class关键字声明类对象。我们在类中定义属性和方法,在实例化的类中使用属性和方法:
<?php
    class Car
    {
      public $name;

      // 构造函数
      public function __construct()
      {
            $this->name = "宝马";
      }

      public function what_color($color)
      {
            return $color;
      }

      public function what_name()
      {
            return $this->name;
      }

      // 析构函数
      public function __destruct()
      {}
    }

    $color = new Car();
    echo $color->what_color("red");
    echo "</br>";
    echo $color->what_name();
?>


[*]表现结果:
red
宝马
   这里不做过多解释了,毕竟是PHP的基础课。假如有其他语言基础的同学,很容易明白构造函数和析构函数是什么,以及他们在干什么。
3.7 NULL


NULL
值指明一个变量是否为空值。可以通过设置变量值为 NULL
来清空变量数据:
<?php
    $x="Hello world!";
    $x=null;
    var_dump($x);
?>
表现结果:
NULL
3.8 资源范例

一个打开文件资源的例子


[*]example.txt是我们提前预备好的文件,放在和该php文件的同级目次下:
<?php
    // 打开文件(创建文件资源)
    $file = fopen("example.txt", "r");       
    if ($file === false) {
      die("无法打开文件!");
    }

    // 检查变量类型
    echo gettype($file)."</br>";// 输出: resource

    // 读取文件内容
    while (!feof($file)) {
      echo fgets($file); // 逐行读取
    }

    // 必须手动关闭资源
    fclose($file);
?>


[*]表现结果:
resource
hello I am here!


[*]读出了文件中的内容,为hello I am here!。
3.9 范例比较

1. 固然 PHP 是弱范例语言,但也需要明白变量范例及它们的意义,因为我们经常需要对 PHP 变量进行比较,包罗松散和严酷比较。


[*]松散比较:使用两个等号 == 比较,只比较值,不比较范例;
[*]严酷比较:用三个等号 === 比较,除了比较值,也比较范例。
2. 比方,“42” 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 “FALSE” 是一个字符串。
<?php
    header("content-type:text/html;charset=utf-8"); //保持中文不乱码
    if(42 == "42") {
      echo '1、值相等'."</br>";
    }

    if(42 === "42") {
      echo '2、类型相等'."</br>";
    }
    else {
      echo '3、类型不相等'."</br>";
    }
?>


[*]表现结果:
1、值相等
3、类型不相等
3. 比较 0、false、null
<?php
    echo '0 == false: ';
    var_dump(0 == false);
    echo '0 === false: ';
    var_dump(0 === false);
    echo "</br>";
    echo '0 == null: ';
    var_dump(0 == null);
    echo '0 === null: ';
    var_dump(0 === null);
    echo "</br>";
    echo 'false == null: ';
    var_dump(false == null);
    echo 'false === null: ';
    var_dump(false === null);
    echo "</br>";
    echo '"0" == false: ';
    var_dump("0" == false);
    echo '"0" === false: ';
    var_dump("0" === false);
    echo "</br>";
    echo '"0" == null: ';
    var_dump("0" == null);
    echo '"0" === null: ';
    var_dump("0" === null);
    echo "</br>";
    echo '"" == false: ';
    var_dump("" == false);
    echo '"" === false: ';
    var_dump("" === false);
    echo "</br>";
    echo '"" == null: ';
    var_dump("" == null);
    echo '"" === null: ';
    var_dump("" === null);
?>


[*]表现结果:
0 == false: bool(true) 0 === false: bool(false)
0 == null: bool(true) 0 === null: bool(false)
false == null: bool(true) false === null: bool(false)
"0" == false: bool(true) "0" === false: bool(false)
"0" == null: bool(false) "0" === null: bool(false)
"" == false: bool(true) "" === false: bool(false)
"" == null: bool(true) "" === null: bool(false)
4. 常量

一个常量由英笔墨母、下划线、和数字构成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。注意: 常量在整个脚本中都可以使用。
1. 设置常量


[*]设置常量,使用 define() 函数,函数语法如下:
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )


[*]该函数有三个参数:

[*]name:必选参数,常量名称,即标记符。
[*]value:必选参数,常量的值。
[*]case_insensitive:可选参数,假如设置为 true,该常量巨细写不敏感。默认是巨细写敏感的。

   非常不发起定义不区分巨细写的常量,该用法已在PHP8.0+中完全移除。
2. 代码实例
<?php
    header("content-type:text/html;charset=utf-8"); //保持中文不乱码
    // 区分大小写的常量名
    define("GREETING", "欢迎访问 baidu.com");
    echo GREETING;    // 输出 "欢迎访问 百度.com"
    echo '<br>';
    // echo greeting;   // 报错
?>


[*]表现结果:
欢迎访问 baidu.com
3. 常量是全局的,可以在脚本任何地方使用
5. 运算符

1. 算数运算符
<?php
        $x=10;
        $y=6;
        echo ($x + $y); // 输出16
        echo '<br>';// 换行
       
        echo ($x - $y); // 输出4
        echo '<br>';// 换行

        echo ($x * $y); // 输出60
        echo '<br>';// 换行

        echo ($x / $y); // 输出1.6666666666667
        echo '<br>';// 换行

        echo ($x % $y); // 输出4
        echo '<br>';// 换行

        echo -$x;                // -10
?>
2. 赋值运算符
<?php
    $x=10;
    echo $x."</br>"; // 输出10
   
    $y=20;
    $y += 100;
    echo $y."</br>"; // 输出120
   
    $z=50;
    $z -= 25;
    echo $z."</br>"; // 输出25
   
    $i=5;
    $i *= 6;
    echo $i."</br>"; // 输出30
   
    $j=10;
    $j /= 5;
    echo $j."</br>"; // 输出2
   
    $k=15;
    $k %= 4;
    echo $k."</br>"; // 输出3
?>


[*]支持字符串的.=:
<?php
        $a = "Hello";
        $b = $a . " world!";
        echo $b; // 输出Hello world!

        $x="Hello";
        $x .= " world!";
        echo $x; // 输出Hello world!
?>
3. 递增/递减运算符
<?php
        $x=10;
        echo ++$x; // 输出11

        $y=10;
        echo $y++; // 输出10

        $z=5;
        echo --$z; // 输出4

        $i=5;
        echo $i--; // 输出5
?>
4. 比较运算符
<?php
    $x=100;
    $y="100";
   
    var_dump($x == $y);
    echo "<br>";
    var_dump($x === $y);
    echo "<br>";
    var_dump($x != $y);
    echo "<br>";
    var_dump($x !== $y);
    echo "<br>";
   
    $a=50;
    $b=90;
   
    var_dump($a > $b);
    echo "<br>";
    var_dump($a < $b);
?>


[*]表现结果:
bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
bool(true)
5. 数组运算符
<?php
    $x = array("a" => "red", "b" => "green");
    $y = array("c" => "blue", "d" => "yellow");
    $d = array("b" => "green","a" => "red" );
    $z = $x + $y; // $x 和 $y 数组合并
    var_dump($z);        // array(4) { ["a"]=> string(3) "red" ["b"]=> string(5) "green" ["c"]=> string(4) "blue" ["d"]=> string(6) "yellow" }
    echo "</br>";
    var_dump($x == $y);   // false
    echo "</br>";
    var_dump($x === $y);    // false
    echo "</br>";
    var_dump($x != $y);   // true
    echo "</br>";
    var_dump($x <> $y);   // 这个也是不等于 true
    echo "</br>";
    var_dump($x !== $y);    // true
    echo "</br>";
    var_dump($x == $d);   // true
    echo "</br>";
    var_dump($x === $d);    // 识别顺序 false
    echo "</br>";
?>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: PHP基础二【变量/输出/数据范例/常量/字符串/运算符】