PHP变量入门教程(1)基础

基础

PHP 中一个美元符号后面跟上一个变量名称,即表示一个变量。变量的名称是对大小写敏感的。

变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。按照正常的正则表达式,它将被表述为:‘[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*‘

注: 字母为 a-z,A-Z,ASCII 字符从 127 到 255(0x7f-0xff)。

<?php
$var = "Bob";
$Var = "Joe";
echo "$var, $Var";      // outputs "Bob, Joe"

$4site = ‘not yet‘;    // invalid; starts with a number
$_4site = ‘not yet‘;    // valid; starts with an underscore
$t?yte = ‘mansikka‘;    // valid; ? is (Extended) ASCII 228.
?>

PHP 3 中,变量总是传值赋值。那也就是说,当你将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。这意味着,例如,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。有关这种类型的赋值操作,请参阅表达式一章。

PHP 4 提供了另外一种方式给变量赋值:传地址赋值。这意味着新的变量简单的引用(换言之,“成为其别名” 或者 “指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然。这同样意味着其中没有执行复制操作;因而,这种赋值操作更加快速。尽管如此,任何提速的操作只有在紧密循环或者大数组或者对象才可能被注意到。

使用传地址赋值,简单地追加一个(&)符号到将要赋值的变量前(源变量)。例如,下列代码片断两次输出‘My name is Bob’:

<?php
$foo = ‘Bob‘;              // Assign the value ‘Bob‘ to $foo
$bar = &$foo;              // Reference $foo via $bar.
$bar = "My name is $bar";  // Alter $bar...
echo $bar;
echo $foo;                // $foo is altered too.
?>

需要注意的是只有命名变量才可以传地址赋值,这一点非常重要。

<?php
$foo = 25;
$bar = &$foo;      // This is a valid assignment.
$bar = &(24 * 7);  // Invalid; references an unnamed expression.

function test()
{
	return 25;
}

$bar = &test();    // Invalid.

预定义变量

PHP 提供了大量的预定义变量。由于许多变量依赖于运行的服务器的版本和设置,及其它因素,所以并没有详细的说明文档。一些预定义变量在 PHP 以命令行形式运行时并不生效。有关这些变量的详细列表,请参阅“保留的预定义变量”一章。

警告

PHP 4.2.0 以及后续版本中,PHP 指令 register_globals 的默认值为 off。这是 PHP 的一个主要变化。让 register_globals 的值为 off 将影响到预定义变量集在全局范围内的有效性。例如,为了得到 DOCUMENT_ROOT 的值,你将必须使用 $_SERVER[‘DOCUMENT_ROOT‘] 代替 $DOCUMENT_ROOT,又如,使用 $_GET[‘id‘] 来代替 $id 从 URL http://www.example.com/test.php?id=3 中获取 id 值,亦或使用 $_ENV[‘HOME‘] 来代替 $HOME 获取环境变量 HOME 的值。

更多相关信息,请阅读配置项目 register_globals,有关安全性的一章使用 Register Globals,以及 PHP 4.1.0 和 4.2.0 的发行通告.

请优先使用可用的 PHP 预定义变量,如 超级全局数组。

从 PHP 4.1.0 开始,PHP 提供了一套附加的预定数组,这些数组变量包含了来自 Web 服务器(如果可用),运行环境,和用户输入的数据。这些数组非常特别,它们在全局范围内自动生效,例如,在任何范围内自动生效。为此,它们常因是 "autoglobals" 或者 "superglobals" 而闻名。(PHP 中尚且没有一种可使用户自定义超级全局变量的机制)超级全局变量罗列于下文中;但是为了得到它们的内容和关于 PHP 预定义变量的进一步的讨论以及它们的本质,请参阅预定义变量。而且,你也将注意到旧的预定义数组($HTTP_*_VARS)仍旧存在。自 PHP 5.0.0 起,冗长的 PHP 预定义变量可以通过设置 register_long_arrays 来屏蔽。

可变变量: 超级全局变量不能被用作可变变量.

如果某些 variables_order 中的变量没有设定,它们的对应的 PHP 预定义数组也是空的。

时间: 2024-10-08 21:02:49

PHP变量入门教程(1)基础的相关文章

Capabilities 入门教程:基础实战篇

该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 待续... 上篇文章介绍了 Linux capabilities 的诞生背景和基本原理,本文将会通过具体的示例来展示如何查看和设置文件的 capabilities. Linux 系统中主要提供了两种工具来管理 capabilities:libcap 和 libcap-ng.libcap 提供了 getcap 和 setcap 两个命令来分别查看和设置文件的

spring入门教程、基础教程

spring入门教程.基本教程 说明: 环境:jdk:1.7.maven:3.3.9.tomcat:7.eclipse 此项目使用maven创建项目 1.入门教程 1.1创建项目 第一步new 第二步(有maven project的忽略这步) 第三步选上 第四步,稍微复杂一点(没学过maven的同学) 结果: 项目此时报错,解决错误: 选择项目右键: (1) (2) (3) 替换jdk (1) 项目创建完毕! 2.加入依赖 打开pom.xml文件     原文地址:https://www.cnb

Away3D 4.0入门教程-- 这个世界的基础

多数Flash程序员想要接触3D项目的时候,应该都和我一样,最关心的是怎么造一座山,怎么在场景里显示流动的河水,或是怎么让模型动起来(奔跑,攻击,或是跳舞),又或是怎么才能给人物换装,怎么让人物装备武器. 但是,请相信我,下面我们所说到的这些名词,在教程真正开始之前,你必须得了解一下,或许它们粗浅的让你觉得根本不值一看,但如果你是一个入门者,能了解一些基础知识,它们终将在未来的某一天帮到你 我会尽量避免使用那些太专业不容易让人理解的词汇,如果哪位朋友觉得下面的内容不对,又或是说的不够,请告诉我,

一步步AS400-Cobol 上手自学入门教程01 - 基础概念(原创)

先学习基础概念 1.COBOL字符:包含: User-defined words 用户定义字符 ?System-names ?Reserved words 关键字 2.用户定义字符User-defined words:合法的定义: ? A - Z ? a - z ? 0 - 9 ? - (连字符). 3.系统名 System-names Computer-names ?Language-names ?Implementor-names: Environment-name Assignment-n

PHP变量入门教程(4)PHP 的外部变量

PHP 的外部变量 HTML 表单(GET 和 POST) 当一个表单体交给 PHP 脚本时,表单中的信息会自动在脚本中可用.有很多方法访问此信息,例如: 一个简单的 HTML 表单 <form action="foo.php" method="POST"> Name: <input type="text" name="username"> Email: <input type="tex

PHP变量入门教程(3)global 关键字

global关键字 首先,一个使用 global 的例子: 使用 global <?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ?> 以上脚本的输出将是 "3".在函数中申明了全局变量 $a 和 $b,任何变量的所有引用变量都会指向到全局变量.对于一个函数能够申明的全局变量的最大个数,PHP 没有限制. 在全局范围内访问变量的第二个办法,是用特殊的 P

PHP变量入门教程(2)超全局变量,总共9个

PHP 超全局变量 $GLOBALS 包含一个引用指向每个当前脚本的全局范围内有效的变量.该数组的键标为全局变量的 名称.从 PHP 3 开始存在 $GLOBALS 数组. $_SERVER 变量由 Web 服务器设定或者直接与当前脚本的执行环境相关联.类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用). $_GET 经由 HTTP GET 方法提交至脚本的变量.类似于旧数组 $HTTP_GET_VARS 数组(依然有效,但反对使用). $_POST 经由 HTTP

ADODB入门教程(基础文章)

1.简要说明ADODB是PHP中的一个通用的数据库操作库,ADODB目前支持MySQL.PostgreSQL.Oracle.Interbase.Microsoft SQL Server.Access.FoxPro.Sybase.ODBC及ADO,你可以从 http://php.weblogs.com/adodb下载 ADODB. 2.安装下载 tgz或 zip解压即可. 3.使用使用前包含进 adodb.inc.php即可include("$adodb_path/adodb.inc.php&qu

兄弟连区块链入门教程之基础开发通过接口查询币种提币情况bch

代码如下 package main import ( "encoding/json" "fmt" "github.com/buger/jsonparser" "github.com/levigross/grequests" ) // HTTPGet . func HTTPGet(url string, requestOptions *grequests.RequestOptions) (response []byte, err