01 2013 档案

摘要:可变函数PHP支持可变函数的概念。这意味着如果一个变量后有圆括号,PHP将寻找与变量的值同名的函数,并且尝试执行他。可变函数不能用作一些语言结构,因为他们不是函数,如echo();print();unset();isset();empty();include();require(); 1 <?php 2 function a(){ 3 echo 'a'; 4 } 5 function b(){ 6 echo 'b'; 7 } 8 function c(){ 9 echo 'c';10 }11 $funrow=array('a' 阅读全文
posted @ 2013-01-31 15:47 saws
摘要:用户自定义函数一 当我们定义一个函数时,逻辑上函数的作用域是全局的,既可以是定义前,也可以是定义后。如1 <?php2 foo();3 function foo(){4 echo 'abc';5 }6 ?>他是可以正常执行的。为什么呢?简单说,PHP是先解释,再执行,他灵活的调用了foo()函数。对于function的位置,因为函数的作用域是全局的,所以只要定义了,那么就可以在任意位置去调用它。但是除了两种情况,函数必须在其调用之前定义,一是在条件语句中定义的函数,二是在函数中定义的函数。例如:1 <?php2 foo();3 if(true){4 funct 阅读全文
posted @ 2013-01-31 11:08 saws
摘要:什么是缓冲区?简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至于为什么要有缓冲区,这是一个很广泛的问题,如果有兴趣,可以在网山找下资料.其实缓冲区最本质的作用就是,协调高速CPU和相对缓慢的IO设备(磁盘等)的运作.PHP在执行的时候,在什么地方有用到缓冲区?想要了解PHP的缓冲区,就要知道执行PHP的时候,缓冲区被设置到了什么地方.当执行PHP的时候,如果碰到了echo print_r之类的会输出数据的代码,PHP就会将要输出的数据放到PHP自身的缓冲区,等待输出.当PHP自身的缓冲区接到指令,指示要输出缓冲区的内容时,将会把缓冲区内的数据输出到apache上 阅读全文
posted @ 2013-01-30 09:49 saws
摘要:return如果在一个函数中调用return语句,将立即结束此函数的执行并将它的参数作为函数的值返回。return()也会终止eval()语句或者脚步文件的执行。如果在全局范围中调用,则当前脚本文件中止运行。如果当前脚本文件是被include()或者require()的,则控制交回调用文件。此外,如果当前脚本是被include()的,则return()的值被当作include()调用的返回值。require和includerequire和include唯一的区别就是,处理失败的方式不同。include()会产生一个Warning警告,而后继续执行,而require()会产生一个致命错误,而后终 阅读全文
posted @ 2013-01-30 08:21 saws
摘要:foreach 值得注意的是两个例子一.是可变变量 可以很方便的遍历POST数组 1 <?php 2 $arr=array('banana','orange','appale','pear','grape'); 3 foreach($arr as $value): 4 $$value=$value; 5 //var_dump($$value); 6 endforeach; 7 $_POST=array('name'=>'Tom','password'=&g 阅读全文
posted @ 2013-01-28 18:49 saws
摘要:While确实最简单了 ,就一个流程控制替代语法,注意一下。 1 <?php 2 $i=1; 3 while($i<=){ 4 echo $i++; 5 } 6 $i=1; 7 while($i<=10): 8 print $i; 9 $i++;10 endwhile; //流程控制替代语法11 ?>do-while语句和while一样,区别在于do-while语句先执行,在坚持,所有会至少执行一次,资深的 C 语言用户可能熟悉另一种不同的 do-while 循环用法,把语句放在 do-while(0) 之中,在循环内部用 break语句来结束执行循环。以下代码片段示范 阅读全文
posted @ 2013-01-27 10:44 saws
摘要:简介中重点花括号可以讲一组语句封装成一个语句组。括号()对于运算结构可以强制改变优先级,而{}标识一个变量,如:<<<EOT asdas{$as}dcccc EOT;.流程控制的代替语法PHP提供了一些流程控制的替代语法,包括if,while,for,foreach,switch。替代的基本形式是把左花括号{蝗虫冒号:,把右括号花括号蝗虫 endif;endwhile;endfor;endforeach;以及endswitch;、注意两点这种写法主要出现在与HTML混编当中,提供代码清晰度。而且长结果的如 if elseif elseif else这种,要把所有左花括号代替留 阅读全文
posted @ 2013-01-26 11:03 saws
摘要:1 <?php 2 //file_exists()函数检查文件或者目录是否存在,dirname(__FILE__)当前文件所在目录名。 3 if(!file_exists(dirname(__FILE__).'/data/common.inc.php')) 4 { 5 header('Location:install/index.php'); 6 exit(); 7 } 8 //自动生成HTML版 9 //判断是否有GET['upcache']没有就跳转到301的静态页面去,有就生成静态页。10 if(isset($_GET['up 阅读全文
posted @ 2013-01-25 11:21 saws
摘要:错误控制运算符PHP支持一个错误运算运算符:@。当将其放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉。@运算符只对表达式有些。对新手来说一个简单的规则就是:如果能从某处得到值,就能在它前面加上@运算符。例如,可以把它放在变量,函数和include()调用,常量,等等之前。不能把它放在函数和类的定义之前,也不能用于条件结果例如IF 和FORECAH等。执行运算符PHP支持一个执行运算符:反引号(``)。注意不是单引号!PHP将尝试将反引号的内容作为外壳命令来执行,并将其输出信息返回 (例如,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“·”的效果 阅读全文
posted @ 2013-01-25 09:08 saws
摘要:运算符优先级<?php$a=true?0:true?1:2; //(true?0:true)?1:2=2?> 说明三元运算符是左联。算术运算符$a%$b 在$a为负值的结果也是负值1 <?php2 $a=-7;3 $b=5;4 echo $a%$b5 ?>这里有个小重点:三元运算符,为什么叫三元运算符呢? 因为还有一元和二元运算符!屌丝一元运算符:(只有一个expr)参加运算,例如:$a++,$a--,!$a二元运算符:(两个expr参加运算),例如 $a+$b,$a-$b,$a%$b三元运算符:(众所周知了)例如:$a?$b:$c;赋值运算符赋值运算符“=”,相当于一 阅读全文
posted @ 2013-01-24 09:25 saws
摘要:常量的语法 可以用define()函数来定义常量。一个常量一旦被定义,就不能再改变或者取消定义。而且常量只能包含标量(boolen,integer,float和string)常量和(全局)变量在不同的名字空间中。这意味着例如TRUE和$TRUE是不同的。如果使用了一个未定义的常量,PHP假定想要的是该常量本身的名字,如同用字符串调用它一样(CONSTANT对应“CONSTANT”)。此时将发出一个E_NOTICE级的错误。变量和常量的5点不同1.常量前面没有美元符号($)2.常量只能用define()函数定义,而不能通过赋值语句;3.常量可以不用理会变量的作用域而在任何地方定义和访问;4.常量 阅读全文
posted @ 2013-01-21 14:05 saws
摘要:可变变量好吧,我第一次看见这个东西或者说第一次认真的看这个东西,我感觉蛋都碎了,如此容易混淆的东西,创造他的价值在哪,不过我想可能有他特殊应用的地方,那么我百度谷歌一下吧。看到这个简洁的代码,哥愚笨的脑袋都震精了。在实际使用中,我们可以不用单独列出并使用每一个表单变量,我们可以使用一个循环语句和一个变量来自动处理它们。结合“for循环”,举例如下:orderform.html的主要内容 1 <form action="test.php" method="post"> 2 <table border="0"> 3 阅读全文
posted @ 2013-01-18 16:23 saws
摘要:PHP中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。一个有效的变量由字母或者下划线开头的,后面跟上任意数量的字母、数字、或者下划线。在此所说的字母是a-z,A-Z,以及ASCII字符从127到255(0x7F-0xff)。虽然在PHP中并不需要初始化变量,但对变量进行初始化是个好习惯。未初始化的变量具有其类型的默认值-布尔类型的变量默认值是FALSE,整形和浮点型变量默认值是零,字符串型变量默认值是空字符串或者数组变量的默认值是空数组。变量范围变量的范围即它定义的上下文背景(也就是它的生效范围)。大部分的PHP变量只有一个单独的范围。这个单独的范围跨度同样包含了include 阅读全文
posted @ 2013-01-17 16:24 saws
摘要:转换为对象如果将一个对象转换成对象,它将不会有任何变化。如果其他任何类型的值转换成对象,将会实例化一个内置类stdClass 对象。如果该值为NULL,则新的实例为空。数组转换成对象将使键名成为属性名并具有相对的值。对于任何其它的值,名为scalar(标量)的成员变量将包含该值。1 <?php2 $object=(object)'ciao',3 echo $obj->scalar; //outputs 'ciao'4 ?>转换为资源由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。转换 阅读全文
posted @ 2013-01-16 18:57 saws
摘要:如果你不给数组键名加',默认情况下PHP也不会报错,而会自动进行取代,给他加上'。但是这种情况是要极力杜绝的,很容易产生混淆。<?php$arr=array('fruit'=>'apple','veggie'=>'carrot');print $arr['fruit']; //appleprint $arr['veggie']; //carrotprint $arr[fruit]; //applledefine('fruit','veggie 阅读全文
posted @ 2013-01-15 15:38 saws
摘要:首先PHP的数组不是实际上的数组而是一个有序映射。这个映射做了多方面的优化,可以把他当真正的数组使用。至于什么事真正的数组,什么是有序映射,目前没有研究。PHP在不明确指定key的情况下,对key进行自动添加,其中有些规律需要记住。(key可以是integer或者string。如果key是一个integer的标准表示,则被解释为整数(例如”8“将被解释成8,而”08“还是”08“)一.请问值(value)56的键(key)是什么。<?phparray(5=>43,32,56,"b"=12);?>二.请问值(value)77的键(key)是什么。<?p 阅读全文
posted @ 2013-01-12 18:21 saws
摘要:Heredoc和Nowdoc最主要的作用就是输出大量字符串,特别是HTML的字符串,他可以避免你在使用''或""时的转译问题。他俩的语法规则不是很难,但是挺怪异,据说是继承于Perl风格的字符串输出技术,反正是和别的PHP代码挺不像的。Heredoc就像是双引号,他可以输出字符串并且识别里面的$变量,而且里面有'和"可以直接输出不必转译。可以说方便很多,但是其自身的语言要求也很严谨,一定要仔细。来看看手册对Heredoc的说明:heredoc句法结构:<<<。在该提示符后面,要定义个标识符,然后是一个新行。接下来是字符串 阅读全文
posted @ 2013-01-11 15:24 saws