Heim php教程 php手册 Php入门教程之PHP 变量基本语法

Php入门教程之PHP 变量基本语法

May 25, 2016 pm 04:48 PM
入门教程 变量 基本

变量是php中非常常用的一个东西,所有的操作都要经过变量来传递,下面我来给各位同学介绍在php中变量的一些常用用法与关于php变量基础知识,

具体方法:

PHP变量用于存储字符、数字、数组甚至对象内容等,以便在我们需要的地方使用.定义一个变量的语法:

$变量名 = 值;

使用变量的例子:

实例代码如下:

<?php
$var_char = "你好!";
echo $var_char;
?>
Nach dem Login kopieren

执行这段代码输出的结果是:

1 你好!

从这个例子可以看出,变量名以 $ 开始,标明这是一个变量.变量名以字母(a-z、A-Z)或者下划线 _ 开始,后面可以跟任意字母或数字以及下划线,但不能是空格.如下这些变量名是有效的:

$var_char

$varChar

$_varChar

$var_char5

提示:关于变量命名,我们建议变量名以标明其实际语意的组合为佳,如 $my_name 或 $myName 格式.

全局变量global

全局变量便是其中之一,当然这个观点颇具争议,有许多人还是建议禁用全局变量,使用不当对造成程序的可读性很差!结构混乱,调试更是一头雾水,但是不可否认他的便捷,这便是php为什么会用全局变量global原因吧!…

今天就遇到了php 全局变量不起作用的问题.先上一段简单的代码:

实例代码如下:

<?php
$a = 0;
function Test() {
    $a = 1;
}
Test();
echo $a;
?>
Nach dem Login kopieren

上面的代码中输出是0,那是因为函数体Test内$a变量被缺省设置为局部变量,$a的作用域就是在Test内.修改代码如下:

<?php
$a = 0;
function Test() {
    global $a; //申明函数体Test内使用的$a变量为global全局变量
    $a = 1;
}
Test();
echo $a;
?>
Nach dem Login kopieren

申明函数体Test内使用的$a变量为global全局变量后,使得$a的作用全局,所以输出为1.上面的实例只是基本的global全局变量知识,下面我们看看复杂点的:

实例代码如下:

//A.php 文件 
<?php
function Test_Global() {
    include &#39;B.php&#39;;
    Test();
}
$a = 0;
Test_Global();
echo $a;
?> 
//B.php 文件 
<?php
function Test() {
    global $a; //申明函数体Sum内使用的$a变量为global全局变量
    $a = 1;
}
?>
Nach dem Login kopieren

为什么输出的却是0?!!

在用户自定义函数中,一个局部函数范围将被引入.任何用于函数内部的变量按缺省情况将被限制在局部函数范围内(包括include 和 require 导入的文件内的变量)!

解释:A.php文件的内Test_Global是定义好的第三方函数,该函数用include导入了B.php文件内的$a的global全局变量,所以$a被限制在Test_Global局部函数范围内,所以B.php文件内的$a的作用范围都在Test_Global内,而不是作用了整个A.php内….

解决方案:

1. 冲出局部函数//A.php 文件

实例代码如下:

<?php
function Test_Global() {
    Test();
}
include &#39;B.php&#39;; //将include 从局部Test_Global函数中移出
$a = 0;
Test_Global();
echo $a;
?>
Nach dem Login kopieren

//B.php 文件

<?php
function Test() {
    global $a;
    $a = 1;
}
?>
Nach dem Login kopieren

2.优秀的访问器

实例代码如下:

//A.php 文件

<?php
include &#39;B.php&#39;;
$a = 0;
Set_Global($a);
echo $a;
?>
Nach dem Login kopieren

//B.php 文件

<?php
function Set_Global(&$var) {
    $var = 1;
}
?>
Nach dem Login kopieren

php变量 引用函数 static变量

"无论怎样声明变量(按值或按引用),总之在PHP脚本的任何位置都可以声明变量.但是,声明的位置会大大影响访问变量的范围.这个可访问的范围称为作用域(scope)" -PHP与MySQL程序设计.在了解php变量之前,我们先看看段式内存管理架构的内存段的划分.通常操作系统会将物理内存划分为以下几个逻辑段.

Text-Segment,这个段最大的特点就是只读.一般存放可执行代码,也有可能常量也存放在这里,比如字符串常量 BSS-Segment,这里存放了那些没有初始化的变量.某种意义来讲,没有初始化的变量都是垃圾,不可用 Data-Segment,这里存放了全局变量和静态变量,直到脚本运行结束,操作系统才会回收这里的内存空间,变量亦会被销毁.

Stack-Heap Segment 函数参数与本地变量(也称局部变量)存放在堆中(stack),还有返回值等等.用完了,操作系统就会回收这部分内存空间.对于C程序员而言,可以自行从栈中(heap)申请内存空间,用完了,也需要自己手动释放.

作为PHP程序言而言,我们关心的是全局变量、静态变量、局部变量、函数参数以及函数返回值.局部变量和函数参数基本上一样,在初始化的时候分配内存空间,退出函数后操作系统会回收内存空间。而全局变量与静态变量要直php脚本运行结束后,内存空间才会被释放.与全局变量不同的时,所有静态变量在程序执行之前就初始化并且分配了内存空间.

注:

1.函数外部声明静态变量意义不大,函数内部声明静态变量受限于作用域,函数外部不能修改函数内部静态变量.

2.引用变量,也是变量,只不过它的值是变量的内存地址.

php保留字global和static实例代码如下:

<?php
$i = $j = 8;
function global_var() {
    global $j, $b;
    $c = $j = $b = $i = 4;
}
global_var();
echo "i:$i, j:$j b:$b c:$c n"; //i:8, j:4 b:4 c:
?>
Nach dem Login kopieren

函数外和内都有变量$i,但是他们二个是完全不同的变量.函数外的$i是全局变量,该内存空间直到脚本运行结束后才会被释放.函数内的$i是局部变量,程序流经过函数的时候,初始化,退出函数的时候,内存被系统回收,再次调用函数,则再次分配内存空间和回收内存空间.二次分配的内存空间有可能是同一内存地址,也有可能不能同一内存地址.

与$i不同的是$j,通过关键字global将局部变量"转为"全局变量.当调用函数global_var()的时候,并不会重新给$j分配内存空间.同样的,可以在函数外打印$b,却不能打印$c是因为$b是全局变量,不会被销毁.而$c则不能打印,$c已经不存在了.在退出函数就给销毁了.

实例代码如下:

<?php
$a = 2;
static $b = 2;
static $c = 3;
function global_var() {
    static $i, $c;
    global $j, $a;
    $c = $a = $b = $i = $j = 4;
}
global_var();
echo "a:$a b:$b c:$c i:$i j:$j"; //a:4 b:2 c:3 i: j:4
?>
Nach dem Login kopieren

首先,我们看函数外的$b和$c,即是全局变量又是static变量.这里static修饰没有太大的意义,因为他们都存放在数据段(data-segment),直到脚本运行完了之后才会被回收。然后,我们再看函数里面的$i和$c,函数调用后,$i和$c其实都没有被回收,但是$i输出是NULL和$c输出是3,这是因为他们的作用域是函数内部,不是函数外部,也就是说$i和$c在函数外是不可见的.函数内static变量的意义就在于此:仅函数内部可见且不会被销毁。也就是说,保证函退出函数,变量也不会被回收,但又不会被其它函数修改.(注:函数外和函数内的$c是二个不同的变量)

实例代码如下:

<?php
function global_var() {
    static $i;
    ++$j;
    ++$i;
    echo "j:$j i:$i n";
}
global_var(); //j:1 i:1
global_var(); //j:1 i:2
global_var(); //j:1 i:3
?>
Nach dem Login kopieren

上例中,变量$j一直都是1,而$i每调用一次就累加1.这是因为,局部变量存放在堆段,每次退出函数时都会被回收.而$i存放在存放在数据段(data-segment),直到程序执行完毕才会被回收.我们平常说的static变量,如果没有特别指明,都说的是函数内部的static变量.

引用函数与static变量

既然static变量要直到脚本执行结束,才会被销毁.那么,有没有办法访问该变量的值呢?我们来看看下面的示例:

实例代码如下:

<?php
get_local_static_var();
$ptr = & get_local_static_var();
get_local_static_var();
++$ptr;
get_local_static_var();
what_i($ptr);
get_local_static_var(); //??
what_p($ptr);
get_local_static_var(); //??
function &get_local_static_var() {
    static $i;
    ++$i;
    echo "i:$i n";
    return $i;
}
function what_i($ptr) {
    $i = & get_local_static_var();
    ++$i;
    ++$ptr;
}
function what_p(&$ptr) {
    $i = & get_local_static_var();
    ++$i;
    ++$ptr;
}
?>
Nach dem Login kopieren

二个凝问号处,分别输出是8和12,这就说明了只要变量没有被销毁,还是可以被访问.我们可以通过引用函数将static变量的地址返回其它函数,其它函数则可通过static变量的地址访问并且修改它的值.

上例第一处??,为什么是8,而不是9.这是因为what_i($ptr)函数,要求参数是按值传递,即此处的$ptr实参值是5,且参数$ptr和全局变量$ptr是二个不同的变量.第二处??的值是12,为什么不是11的道理亦是如此.what_p(&$ptr)函数,要求参数是按引用传递,即此处的$ptr是指向static变量$i的地址,需要注意的是参数$ptr和全局变量$ptr也是二个不同的变量,只不过他们都指向同一个地方.

drupal应用赏析

drupal定义了一个drupal_static函数,其它函数的static变量都存放在一个数组中,然后对drupal应用到的所有static进行统一管理,比如赋值,重置,删除等.我觉得,这是一个好办法.

实例代码如下:

<?php
function &drupal_static($name, $default_value = NULL, $reset = FALSE) {
    static $data = array() , $default = array();
    if (!isset($name)) {
        foreach ($default as $name => $value) {
            $data[$name] = $value;
        }
        return $data;
    }
    if ($reset) {
        if (array_key_exists($name, $default)) {
            $data[$name] = $default[$name];
        } else {
            return $data;
        }
    } elseif (!array_key_exists($name, $data)) {
        $default[$name] = $data[$name] = $default_value;
    }
    return $data[$name];
}
function ip_address() {
    $ip_address = & drupal_static(__FUNCTION__);
    if (!isset($ip_address)) {
        $ip_address = $_SERVER[&#39;REMOTE_ADDR&#39;];
        if (variable_get(&#39;reverse_proxy&#39;, 0)) {
            if (array_key_exists(&#39;HTTP_X_FORWARDED_FOR&#39;, $_SERVER)) {
                $reverse_proxy_addresses = variable_get(&#39;reverse_proxy_addresses&#39;, array());
                if (!emptyempty($reverse_proxy_addresses) && in_array($ip_address, $reverse_proxy_addresses, TRUE)) {
                    $ip_address_parts = explode(&#39;,&#39;, $_SERVER[&#39;HTTP_X_FORWARDED_FOR&#39;]);
                    $ip_address = trim(array_pop($ip_address_parts));
                }
            }
            if (array_key_exists(&#39;HTTP_X_CLUSTER_CLIENT_IP&#39;, $_SERVER)) {
                $ip_address = $_SERVER[&#39;HTTP_X_CLUSTER_CLIENT_IP&#39;];
            }
        }
    }
    return $ip_address;
}
ip_address();
//在drupal中很多这样的应用方式,将其它函数的static变量都存放到一个地方,即drupal_static的data中,然后再统一管理,比如重置等等。
?>
Nach dem Login kopieren


教程地址:

欢迎转载!但请带上文章地址^^

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Eine Anleitung zur Verwendung von Windows 11- und 10-Umgebungsvariablen für die Profilerstellung Eine Anleitung zur Verwendung von Windows 11- und 10-Umgebungsvariablen für die Profilerstellung Nov 01, 2023 pm 08:13 PM

Umgebungsvariablen sind der Pfad zum Speicherort (oder zur Umgebung), an dem Anwendungen und Programme ausgeführt werden. Sie können vom Benutzer erstellt, bearbeitet, verwaltet oder gelöscht werden und sind nützlich bei der Verwaltung des Verhaltens bestimmter Prozesse. So erstellen Sie eine Konfigurationsdatei, um mehrere Variablen gleichzeitig zu verwalten, ohne sie unter Windows einzeln bearbeiten zu müssen. So verwenden Sie Profile in Umgebungsvariablen Windows 11 und 10 Unter Windows gibt es zwei Sätze von Umgebungsvariablen – Benutzervariablen (gilt für den aktuellen Benutzer) und Systemvariablen (gilt global). Mit einem Tool wie PowerToys können Sie jedoch eine separate Konfigurationsdatei erstellen, um neue und vorhandene Variablen hinzuzufügen und alle auf einmal zu verwalten. So geht's: Schritt 1: Installieren Sie PowerToysPowerTo

Strikter Modus für Variablen in PHP7: Wie können potenzielle Fehler reduziert werden? Strikter Modus für Variablen in PHP7: Wie können potenzielle Fehler reduziert werden? Oct 19, 2023 am 10:01 AM

In PHP7 wurde der strikte Modus eingeführt, der Entwicklern dabei helfen kann, potenzielle Fehler zu reduzieren. In diesem Artikel wird erklärt, was der strikte Modus ist und wie man den strikten Modus in PHP7 verwendet, um Fehler zu reduzieren. Gleichzeitig wird die Anwendung des strikten Modus anhand von Codebeispielen demonstriert. 1. Was ist der strikte Modus? Der strikte Modus ist eine Funktion in PHP7, die Entwicklern helfen kann, standardisierten Code zu schreiben und einige häufige Fehler zu reduzieren. Im strikten Modus gelten strenge Einschränkungen und Erkennungen für die Variablendeklaration, Typprüfung, Funktionsaufrufe usw. Passieren

Anfängerleitfaden: Beginnen Sie bei Null und lernen Sie MyBatis Schritt für Schritt Anfängerleitfaden: Beginnen Sie bei Null und lernen Sie MyBatis Schritt für Schritt Feb 19, 2024 am 11:05 AM

Prägnantes und leicht verständliches MyBatis-Einführungs-Tutorial: Schreiben Sie Schritt für Schritt Ihr erstes Programm. MyBatis ist ein beliebtes Java-Persistenzschicht-Framework, das den Prozess der Interaktion mit Datenbanken vereinfacht. Dieses Tutorial zeigt Ihnen, wie Sie mit MyBatis einfache Datenbankoperationen erstellen und ausführen. Schritt 1: Umgebungseinrichtung Stellen Sie zunächst sicher, dass Ihre Java-Entwicklungsumgebung installiert ist. Laden Sie dann die neueste Version von MyBatis herunter und fügen Sie sie Ihrem Java-Projekt hinzu. Sie können es von der offiziellen Website von MyBatis herunterladen

Was sind Instanzvariablen in Java? Was sind Instanzvariablen in Java? Feb 19, 2024 pm 07:55 PM

Instanzvariablen in Java beziehen sich auf Variablen, die in der Klasse definiert sind, nicht in der Methode oder dem Konstruktor. Instanzvariablen werden auch Mitgliedsvariablen genannt. Jede Instanz einer Klasse verfügt über eine eigene Kopie der Instanzvariablen. Instanzvariablen werden während der Objekterstellung initialisiert und ihr Zustand wird während der gesamten Lebensdauer des Objekts gespeichert und beibehalten. Instanzvariablendefinitionen werden normalerweise an der Spitze der Klasse platziert und können mit einem beliebigen Zugriffsmodifikator deklariert werden, der öffentlich, privat, geschützt oder der Standardzugriffsmodifikator sein kann. Es hängt davon ab, was wir wollen

Wie erhalte ich Variablen aus der PHP-Methode mit Ajax? Wie erhalte ich Variablen aus der PHP-Methode mit Ajax? Mar 09, 2024 pm 05:36 PM

Die Verwendung von Ajax zum Abrufen von Variablen aus PHP-Methoden ist ein häufiges Szenario in der Webentwicklung. Durch Ajax kann die Seite dynamisch abgerufen werden, ohne dass die Daten aktualisiert werden müssen. In diesem Artikel stellen wir vor, wie man Ajax verwendet, um Variablen aus PHP-Methoden abzurufen, und stellen spezifische Codebeispiele bereit. Zuerst müssen wir eine PHP-Datei schreiben, um die Ajax-Anfrage zu verarbeiten und die erforderlichen Variablen zurückzugeben. Hier ist ein Beispielcode für eine einfache PHP-Datei getData.php:

Einführung in die PHP-Funktion – is_string(): Überprüfen Sie, ob die Variable eine Zeichenfolge ist Einführung in die PHP-Funktion – is_string(): Überprüfen Sie, ob die Variable eine Zeichenfolge ist Jul 24, 2023 pm 09:33 PM

Einführung in die PHP-Funktion – strpos(): Überprüfen Sie, ob eine Variable ein String ist. In PHP ist is_string() eine sehr nützliche Funktion, die verwendet wird, um zu überprüfen, ob eine Variable ein String ist. Wenn wir feststellen müssen, ob eine Variable eine Zeichenfolge ist, kann uns die Funktion is_string() dabei helfen, dieses Ziel einfach zu erreichen. Im Folgenden erfahren Sie, wie Sie die Funktion is_string() verwenden und stellen einige zugehörige Codebeispiele bereit. Die Syntax der Funktion is_string() ist sehr einfach. es muss nur

Mindmap der Python-Syntax: Vertiefendes Verständnis der Codestruktur Mindmap der Python-Syntax: Vertiefendes Verständnis der Codestruktur Feb 21, 2024 am 09:00 AM

Python wird aufgrund seiner einfachen und leicht lesbaren Syntax in einer Vielzahl von Bereichen häufig verwendet. Es ist von entscheidender Bedeutung, die Grundstruktur der Python-Syntax zu beherrschen, um sowohl die Programmiereffizienz zu verbessern als auch ein tiefes Verständnis für die Funktionsweise des Codes zu erlangen. Zu diesem Zweck bietet dieser Artikel eine umfassende Mindmap, die verschiedene Aspekte der Python-Syntax detailliert beschreibt. Variablen und Datentypen Variablen sind Container, die zum Speichern von Daten in Python verwendet werden. Die Mindmap zeigt gängige Python-Datentypen, einschließlich Ganzzahlen, Gleitkommazahlen, Zeichenfolgen, boolesche Werte und Listen. Jeder Datentyp hat seine eigenen Eigenschaften und Betriebsmethoden. Operatoren Operatoren werden verwendet, um verschiedene Operationen an Datentypen auszuführen. Die Mindmap deckt die verschiedenen Operatortypen in Python ab, z. B. arithmetische Operatoren und Verhältnisse

jQuery-Nutzungspraxis: Mehrere Möglichkeiten, um festzustellen, ob eine Variable leer ist jQuery-Nutzungspraxis: Mehrere Möglichkeiten, um festzustellen, ob eine Variable leer ist Feb 27, 2024 pm 04:12 PM

jQuery ist eine in der Webentwicklung weit verbreitete JavaScript-Bibliothek, die viele einfache und praktische Methoden zur Bedienung von Webseitenelementen und zur Verarbeitung von Ereignissen bietet. In der tatsächlichen Entwicklung stoßen wir häufig auf Situationen, in denen wir feststellen müssen, ob eine Variable leer ist. In diesem Artikel werden mehrere gängige Methoden zur Verwendung von jQuery vorgestellt, um festzustellen, ob eine Variable leer ist, und um spezifische Codebeispiele anzuhängen. Methode 1: Verwenden Sie die if-Anweisung, um varstr="";if(str){co

See all articles