検索
ホームページphp教程php手册初心者向け: PHP での変数の使用の概要

就像大部份的结构化程序,有所谓的全局变量与局部变量,php 在这方面也是有相同的处理方式。

在 php 的程序执行时,系统会在内存中保留一块全局变量的区域。实际运用时,可以透过 $globals["变量名称"] 将需要的变量取出。在用户自定的函数或程序中,就可以用 $globals 数组取出需要的变量。当然别忘了 php 的变量有分大小写,搞错了大小写可是叫一百年,变量也不会出来。

$globals 数组是 php 程序中比较特殊的变量,不必定义,系统会自动匹配相关的变量在里面。在函数中,也不必管 $globals 数组是否已经做全局定义,就可以直接使用了。

和 $globals 变量类似的还有 $php_errormsg 字符串变量。若 php 的配置文件 (php.ini/php3.ini) 中的 track_errors 选项打开的话,会有全局变量 $php_errormsg 可以看到错误的信息。

在 php 中,全局变量的有效范围 (scope) 仅限于主要程序中,不会影响到函数中同名的变量,也就是全局变量与局部变量互不侵犯。若要变量能通透到函数中,就要用到 $globals 数组或是使用 global 定义。

例如,在自行开发的函数中,要取得目前执行 php 程序页面的文件名,就可以用 $globals["php_self"] 取出 $php_self 的值。

// 本程序使用 $globals 数组
function myfunc() {
echo $globals["php_self"];
}
myfunc();
?>

下面是错误的示范,请勿模仿,上面的才是正确的示范。

// 这是错误的示范
function errfunc() {
echo $php_self;
}
errfunc();
?>

但是这个错误的示范要是改成下例就没问题了

// 本程序使用全局定义
function myfunc() {
global $php_self;
echo $php_self;
}
myfunc();
?>

在变量前面加上 global 的名称,就是定义该变量为全局变量。用这种方式,就不需使用 $globals 数组,也能让变量进入自行开发的函数中。

接下来先看静态变量的例子

// 静态变量的例子
function myfunc() {
static $mystr;
$mystr.="哈";
echo $mystr."
\n";
}
myfunc();  // 哈
myfunc();  // 哈哈
myfunc();  // 哈哈哈
?>

函数在执行时所产生的变量,在函数结束时就消失了,有时因为程序的需要,函数在循环中,当不希望变量在每次执行完函数就消失的话,静态变量 (static variable) 就派上用场了。上例中,使用 $mystr 变量之前,先在变量前面加上 static,即表示变量 $mystr 是静态变量,当每次执行 myfunc() 函数时,$mystr 的值会一直增加,每执行一次就多一个哈字。若将 static 的静态变量定义拿掉,就没办法累加哈字了。

// 不是静态变量的例子 (错误的)
function myfunc() {
$mystr.="哈";
echo $mystr."
\n";
}
myfunc();  // 哈
myfunc();  // 哈
myfunc();  // 哈
?>

再看一个比较实际的例子,它是处理表格的颜色,让隔行的颜色不同。

function tdbackcolor() {
static $colorstr;
if ($colorstr=="808080") {
$colorstr="c0c0c0";
} else {
$colorstr="808080";
}
return($colorstr);
}
echo "

\n";
for ($i=0; $i$colorstr=tdbackcolor();
echo "\n";
}
echo "
这是第".$i."行
";
?>

php 的变量使用技巧上,最令人觉得不可思议的则是变量的变量 (variable variable)。这是充分利用 php 特性玩出的特殊技巧

$a = "hello";
$$a = "world";
echo "$a, $hello";  // hello, world
echo "$a, {$a}"; // 也是 hello, world
?>

mdean@kcnet.com 举出一个更绝的例子 (24-apr-1999),他称为变量的函数 (variable function)

function mycallbackfunction()
{
print("hello from callback");
}
function myfunction($callback)
{
$callback();
}
// call to myfunction passing callback
// function as parameter
myfunction("mycallbackfunction");
?>

ユーザーがフォームに入力した情報については、どのように対処すればよいですか? PHP 設定ファイルで、track_vars が on に設定されている場合、変数名が直接使用されると便利です。次の例に示すように、next.php が実行されると、システムは $username と $sex という 2 つの変数を自動的に生成します。これらは直接使用できます。これは、独自に解析する必要がある従来の CGI と比べて、php は非常に優れています。すばらしい。


名前:

性別:


php の文法の多くは C 言語のコピーであるため、 php 変数を使用するときは、使用する前に変数を初期化するだけで済みます。使用するすべての変数を事前に定義する必要はありません。これには確かに長所と短所があります。長所は使いやすさと自由度ですが、短所は、これらの自由にはデバッグにかなりのコストがかかることが多いことです。もちろん、プログラム コードが短い PHP プログラムではこれは問題になりません。プログラムに数百行または数千行がある場合、または複数のレベルの include または require が含まれている場合でも、問題が発生します。いずれにせよ、良い文章を書く習慣を維持することが、若さを無駄にしない方法です。



声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター