就像大部份的结构化程序,有所谓的全局变量与局部变量,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 "
这是第".$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");
?>
至于用户在 form 中输入的资料,要怎么处理呢?要是在 php 的配置文件中,track_vars 设为 on 时,直接使用变量名字就好了。如下例,next.php 在执行时,系统会自动产生两个变量 $username 及 $sex,直接使用就好了,比起传统的 cgi 要自己解析,php 实在是太神奇了。
由于 php 许多语法都是 c 语言的翻版,故 php 在使用变量时,随时都可以使用新的变量,只要在使用前将变量初始化就好了,不必像 pascal 语言那样严谨,所有要使用的变量都要事先定义。这当然有好处与坏处:好处是使用方便、自由;坏处就是常常因这些自由而付出相当大的代价调试。在程序码短的 php 程序当然不成问题,当程序在数百数千行,甚至 include 或 require 好几层之后,问题就浮现出来了。无论如何,保持良好的写作习惯才是避免浪费青春的方法。

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

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

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

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

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

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

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

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


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
