|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
那么接下来,这就算学会啦?NO,NO,NO,还早呢,你至尽还没碰过OOP之类的吧?模板呢?变量 PHP变量的利用
作者:sports98 2002-8-13
良多伴侣在编写PHP法式的时分有时分对变量总有着不克不及肯定的成绩,并且也有良多成绩就是由于
变量的处置不妥所酿成的。这里就PHP变量体系说以下,缺乏的地方还望指教。
PHP的变量分为全局变量与部分变量。
作甚全局变量?
学过C/JAVA/C++之类的伴侣必定懂得main(){}内声明的变量所达的区域了~,而PHP为注释性语句并不是
编译言语,咱们也晓得PHP不存在main(){}主体,从何声明?其实PHP页面自己就是个main(){}只需是在页面内
而非在函数内声明的变量咱们都称其为全局变量...例如:
<?php
$int_a=0; //初始全局变量$int_a将其赋值为0
echo "全局变量:".$int_a; //打印全局变量
function child_a(){ //部分变量的利用
$int_a=0; //这里是部分变量,固然与全局变量名不异但此变量仅在child_a内可见
echo "From child_a:".$int_a;
}
function child_b(){ //挪用全局变量
global $int_a; //声明挪用全局变量
echo "From child_b:".$int_a;
}
?>
从下面的一个例子,咱们可以很复杂了然的看分明PHP中全局与部分变量之间的差距...
另咱们乐意的是PHP供应了其他的CGI言语的办事器全局变量...这些变量当页面调入的时分就已由体系主动生成
这些全局变量包括在
$_SERVER($HTTP_SERVER_VARS) (办事器供应的相干变量办事) PHP4.1.0
$_ENV($HTTP_ENV_VARS) (保留相干情况变量) PHP4.1.0
$_POST (保留利用Form post办法提交的变量) PHP4.1.0
$_GET (保留利用Form GET/URI办法提交的变量) PHP4.1.0
$_COOKIE (保留利用页面取得的COOKIE数据) PHP4.1.0
$_SESSION (保留站点内会话变量) PHP4.1.0
$HTTP_POST_VARS (同$_POST,按linuxforum.net一帖对此的评论是$_POST的效力比其更高) PHP4.1.0
$HTTP_GET_VARS (同$_GET,评论同上.) PHP4.1.0
$_REQUEST (包括了$_GET,$_POST,$_COOKIE,$_FILES) PHP4.1.0
$_FILES (严厉的说此变量已包括在$_POST和$HTTP_POST_VARS,次要是取得form post体例提交的file变量) PHP4.1.0
$GLOBALS (保留一切全局变量的数组) PHP3.0.0
$php_errormsg (此全局变量必需在php.ini中将其翻开:track_error=on)
以上变量为体系全局变量,您不需求声明他们就能够直接利用,固然了,您的PHP版本必定要高于或等于他们前面所标注的版本号。
在利用这些变量的时分,您无需用global关头字来声明他们...
<?php
function g_p(){
echo "Welcome ".$_SERVER[REMOTE_ADDR].". nice meet you I am".$_SERVER[SERVER_ADDR];
// Welcome 192.168.0.3. nice meet you I am 192.168.0.1
}
?>
自界说变量,PHP供应的自界说变量其实不象编译型语系那样,需求先声明。而是直接利用,但假如一个不公道的法式变量的混乱无规
我想过个几天后或许你本人都不会读分明的~,假如您只需求一个过度变量,您可以随便的去声明他只需不与其他变量产生抵触,并且合适定名划定规矩
用后建议利用unset将其删除..
PHP还供应了变量的变量这个概念
就如之前有人发帖问过这个成绩
上面将这个表达一下~,其实这是个最复杂的变量的变量办法,我想假如对C里的指针和地址对照熟习的人了解这个会很快的.
<?php
$vvv="int_a";
$int_a="vvv";
echo "vvv is:".$vvv; //vvv is:int_a
echo "int_a is:".$int_a; //int_a is:vvv
echo '$$vvv is:'.$$vvv; //$$vvv is:vvv
echo '$$int_a is:'.$$int_a; //$$int_a is:int_a
?>
另:在一入手下手接触PHP的时分被他的所输便可得(就是提交变量可以直接利用起name标志的值来做为变量利用.),跟着工夫的推移,收集的开展
PHP.net开辟小组发明在这里居然有很多人在做文章。例:
<?php
for($int_a;$int_a<100;$int_a++){
echo "I am $int_a \r\n<br>";
}
?>
以上法式按逻辑来讲,法式象体系请求一新变量$int_a因为未赋默许值,体系将默许给$int_a赋于0,此时应当打印100行 i am ...
然而假如有人传递过去这个变量呢???好比说http://url/count.php?int_a=99此时体系将只打印一行。我这里只是复杂的说一下
假如这个法式是操作你的数据库,或操作你的秘密性文件,你所需求的是公有变量而非外界传递过去的变量...,我团体感觉PHP开辟小组
在这个成绩上的处置是自创了编译言语的长处..
不外不必忧虑假如你感觉页面不受外界变量的影响,并且临时也不必进步到这个平安度的话您可使用
if($_GLOBAL_ARRAY){//判别是不是存在全局变量的数组
extract($_GLOBAL_ARRAY,EXTR_PREFIX_SAME,"_global_array"); //将数组内变量导入到以后的变量表内,假如产生抵触则将全局变量前加上_global_array前缀
}
因为PHP小组对体系的平安进步,因而分收回来的版本自php4.2.X后已默许将register_global选项设置为OFF,假如您不需求利用的话可以将其翻开ON
总结:
PHP是个很优异的WEB CGI言语,PHP的收费与良多数据库的严密联合,他可以完成其他办事器剧本所完成的特定办事,ASP所供应的两头件,在PHP
中可以经由过程dl()进或利用静态扩大将其加载进PHP。而PHP的变量也会愈来愈完美...
学有所限,若有不正还请指教。
也或许是因为我还没有真正的学到深处吧,说实在的,PHP中的很多高级点的应用,如PHP类、PHP函数基本还是不懂吧! |
|