「PHP系列」PHP变量

一、PHP变量

在 PHP 中,变量是用于存储数据值的标识符。它们可以存储各种类型的数据,如整数、浮点数、字符串、布尔值、数组和对象等。变量名称以 $ 符号开头,后面跟着一个或多个字母、数字或下划线。

1. 基本变量赋值和输出

<?php
$name = "John Doe";
$age = 30;

echo "Name: " . $name . "<br>";
echo "Age: " . $age;
?>

输出:

Name: John Doe
Age: 30

2. 变量类型自动转换

<?php
$number = 10;
$string = "20";

$sum = $number + $string; // 自动将 $string 转换为整数

echo "Sum: " . $sum;
?>

输出:

Sum: 30

3. 使用变量存储数组

<?php
$fruits = array("apple", "banana", "orange");

echo $fruits[0]; // 输出 apple
echo $fruits[1]; // 输出 banana
echo $fruits[2]; // 输出 orange
?>

4. 使用变量存储对象

<?php
class Person {
    public $name;
    public $age;
    
    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$person = new Person("Alice", 25);

echo "Name: " . $person->name . "<br>";
echo "Age: " . $person->age;
?>

输出:

Name: Alice
Age: 25

5. 可变变量(Variable Variables)

<?php
$var = 'hello';
$$var = 'world'; // 相当于 $hello = 'world';

echo $hello; // 输出 world
?>

6. 全局变量和局部变量

<?php
$globalVar = "I'm global";

function testFunction() {
    $localVar = "I'm local";
    echo $globalVar; // 输出 I'm global,因为可以在函数内部访问全局变量
    echo $localVar; // 输出 I'm local
}

testFunction();
?>

7. 注意事项:

  • 变量名是区分大小写的。
  • 变量名不能以数字开头。
  • 变量名不能包含特殊字符,除了下划线 _ 和美元符号 $
  • 变量在使用前必须先声明和赋值,否则会产生错误或警告。

二、PHP变量作用域

在 PHP 中,变量的作用域决定了变量在哪些代码块中是可访问的。变量的作用域可以是全局的或局部的。全局变量在整个脚本中都是可用的,而局部变量仅在声明它的函数或代码块内可用。

1. 全局变量和局部变量

<?php
$globalVar = "I'm global"; // 全局变量

function testFunction() {
    $localVar = "I'm local"; // 局部变量
    echo $globalVar; // 可以访问全局变量
    echo $localVar; // 可以访问局部变量
}

echo $globalVar; // 可以访问全局变量
// echo $localVar; // 错误:局部变量在外部不可访问

testFunction();
?>

2. 函数内的全局变量访问

在函数内部访问全局变量需要使用 global 关键字:

<?php
$globalVar = "I'm global";

function testFunction() {
    global $globalVar; // 声明要使用的全局变量
    echo $globalVar; // 输出全局变量的值
}

testFunction(); // 输出 "I'm global"
?>

3. 超全局变量

超全局变量在脚本的任何地方都是可用的,无需使用 global 关键字。这些变量包括 $_GET$_POST$_SESSION$_COOKIE$_REQUEST$_SERVER$_ENV$_FILES$_GLOBALS

<?php
// 假设这是一个通过 POST 方法提交的表单
echo $_POST['username']; // 访问 POST 数组中的 'username' 键
?>

4. 静态变量

静态变量在函数调用结束后不会被销毁,它们的值在函数调用之间保持不变。

<?php
function testStatic() {
    static $count = 0; // 静态变量
    $count++;
    echo $count;
}

testStatic(); // 输出 1
testStatic(); // 输出 2
testStatic(); // 输出 3
?>

5. 变量的可见性

在类内部,变量的可见性可以通过 publicprotectedprivate 关键字来控制。这些关键字决定了变量在类内部、子类或类外部的可访问性。

<?php
class MyClass {
    public $publicVar = "I'm public"; // 公有变量,任何地方都可访问
    protected $protectedVar = "I'm protected"; // 受保护变量,只能在类和子类中访问
    private $privateVar = "I'm private"; // 私有变量,只能在类内部访问
}

$obj = new MyClass();
echo $obj->publicVar; // 输出 "I'm public"
// echo $obj->protectedVar; // 错误:受保护变量在类外部不可访问
// echo $obj->privateVar; // 错误:私有变量在类外部不可访问
?>

6. 注意事项:

  • 在函数内部,局部变量会覆盖同名的全局变量,除非使用 global 关键字明确指定。
  • global 关键字用于在函数内部访问全局变量,但过度使用可能导致代码难以理解和维护。
  • 超全局变量是 PHP 预定义的,用于访问来自 Web 服务器、客户端、会话和环境的信息。
  • 静态变量在函数调用之间保持其值,这在某些情况下非常有用,比如计数或保持状态。
  • 类内部的变量可见性控制了变量在类、子类或类外部的可访问性,是面向对象编程中的一个重要概念。

三、PHP关键字

PHP关键字是在PHP编程中用于执行特定操作或指示的保留字。这些关键字具有特殊的意义,不能用作变量名、函数名或类名等标识符。

1. echo

echo 是用于输出一个或多个字符串的关键字。

案例

<?php
echo "Hello, World!";
?>

2. if

if 关键字用于条件判断。

案例

<?php
$age = 25;
if ($age >= 18) {
    echo "You are an adult.";
} else {
    echo "You are not an adult.";
}
?>

3. function

function 关键字用于定义函数。

案例

<?php
function greet($name) {
    echo "Hello, " . $name . "!";
}
greet("John");
?>

4. class

class 关键字用于定义类。

案例

<?php
class Car {
    public $color;
    
    function __construct($color) {
        $this->color = $color;
    }
    
    function describe() {
        echo "This car is " . $this->color . ".";
    }
}

$myCar = new Car("red");
$myCar->describe();
?>

5. require_once

require_once 关键字用于引入一个文件,并确保该文件只被引入一次。

案例

<?php
require_once 'config.php'; // 假设 config.php 包含数据库连接配置
// ... 在这里使用 config.php 中定义的配置 ...
?>

6. foreach

foreach 关键字用于遍历数组。

案例

<?php
$fruits = array("apple", "banana", "orange");
foreach ($fruits as $fruit) {
    echo $fruit . "<br>";
}
?>

7. while

while 关键字用于执行循环,只要指定的条件为真。

案例

<?php
$i = 0;
while ($i < 10) {
    echo $i . "<br>";
    $i++;
}
?>

8. trycatch

trycatch 关键字用于异常处理。

案例

<?php
try {
    // 可能会抛出异常的代码
    $file = fopen("nonexistent.txt", "r");
    // ... 读取文件 ...
    fclose($file);
} catch (Exception $e) {
    // 处理异常的代码
    echo "An error occurred: " . $e->getMessage();
}
?>

9. final

final 关键字用于声明类和方法不可被继承或重写。

案例

<?php
final class Singleton {
    // ... 单例模式的实现 ...
}
// 尝试继承 Singleton 类会导致错误
class AnotherClass extends Singleton {
    // ... 无效的代码 ...
}
?>

四、相关链接

  1. php官网
  2. php_Github
  3. PHP实现Token
  4. 「PHP系列」PHP简介与起步
  5. 「PHP系列」PHP语法介绍

相关推荐

  1. PHP系列PHP变量

    2024-03-31 23:22:02       51 阅读
  2. PHP系列PHP超级全局变量详解

    2024-03-31 23:22:02       15 阅读
  3. php变量

    2024-03-31 23:22:02       14 阅读
  4. (一)PHP 变量

    2024-03-31 23:22:02       9 阅读
  5. PHP系列PHP 函数详解

    2024-03-31 23:22:02       18 阅读
  6. php环境变量$_ENV详解

    2024-03-31 23:22:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-31 23:22:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-31 23:22:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-31 23:22:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-31 23:22:02       20 阅读

热门阅读

  1. 计算机世界的“十六进制”为什么如此重要

    2024-03-31 23:22:02       16 阅读
  2. 蓝桥杯2014年第十三届省赛真题-切面条

    2024-03-31 23:22:02       18 阅读
  3. 【1单片机入门记录】DS18B20的应用

    2024-03-31 23:22:02       34 阅读
  4. C++中的类型转换

    2024-03-31 23:22:02       22 阅读
  5. C语言刷题(21)

    2024-03-31 23:22:02       15 阅读
  6. 算法刷题day37

    2024-03-31 23:22:02       18 阅读
  7. 优化代码分支

    2024-03-31 23:22:02       19 阅读
  8. c语言:把百分制转化为等级制度(switch语句)

    2024-03-31 23:22:02       20 阅读
  9. 搭建语音打电话机器人需要哪些技术和资源

    2024-03-31 23:22:02       17 阅读
  10. 座次问题(蓝桥杯)

    2024-03-31 23:22:02       16 阅读
  11. css页面搭建案例

    2024-03-31 23:22:02       15 阅读