include和require的异同:
相同点:都可以引入其他的php文件。
不同点:include当出现引入文件错误时,只会出现警告,但程序仍然会继续往下执行。而当require出现错误时则会报错,程序终止。
一般来说都是使用include_once和require_once,而不使用include和require。引入文件的语句要放在最前面,这点就类似C语言。
php变量是区分大小写的,但是函数名却不区分大小写。且不能以数字开头。例如Abc和abc是一样的,如果这样的两个函数共存在一个文件中就会报错。
局部变量和全局变量同名下的情况分析;
看下面的一段代码:
$a=45;
function abc(){ //定义函数
$a+= 10;
}
abc(); //调用函数
echo ‘$a=’.$a;
输出结果是多少呢?结果还是45,为什么呢?在函数体内的是局部变量,和外部变量$a同名,但不是同一个变量,而是两个完全不相干的变量。函数内的变量$a随着函数执行完毕就释放了。输出的仍是外部变量,如果要在函数体内使用外部变量(全局变量)那么就要在内部的同名变量前加上global 声明。其实在编译器看来,声明为global时其实是把外部同名的变量的地址赋给这个局部变量,这时内部变量和外部同名变量是同一地址,所以自然就成了同一变量了。在函数体的形参或没有声明为global的局部变量,那么就是作为局部变量来使用的,作用域就是在函数体内。例如下面的一段代码输出结果是45,而不是55.
$a=45;
function abc($a){ //定义函数
$a += 10;
}
abc($a); //调用函数
echo ‘$a=’.$a;
在php中一共有三种级别的错误:
第一级错误:notice,最轻的错误,还可以执行
第二级错误:warn ,警告,还可以执行
第三级错误:error ,程序无法执行下去,这个错误是最严重的错误
unset函数解说:
(PHP 3, PHP 4 )
unset -- 释放给定的变量,当我们不想使用该变量时就可以释放这个变量。
描述
void unset ( mixedvar [, mixed var [, ...]])
unset()销毁指定的变量。注意在 PHP 3 中,unset() 将返回 TRUE(实际上是整型值 1),而在 PHP 4 中,unset() 不再是一个真正的函数:它现在是一个语句。这样就没有了返回值,试图获取 unset() 的返回值将导致解析错误。
如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用unset() 之前一样的值。即在函数外部该全局变量仍保持原样。如果在函数中unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用unset() 之前一样的值。即形参是个取地址符的情况。
php有点类似C语言,不支持多态,不允许同名函数的存在,但对于形参更灵活,在调用时可以不写或少写几个形参值。还可以给形参赋默认值。例如 function diyMethod($a,$b=3)就是给形参赋默认值为3 ,php函数默认传值方式是值传递,要想使用引用传递(地址传递),在形参前加上地址符&就可以了。引用传递其实有点相当于变相地将形参所对应的调用该函数的传入参数变成了全局变量。虽然没有global声明。引用传递会改变传入参数的值!但要注意这里的引用并不是C语言的指针.因为指针本身是一个变量,而php的引用其实是变量的一种别名,说白了,就是一个地址可以有多个变量名字。在 PHP 中引用意味着用不同的名字访问同一个变量内容。当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。
php中变量、常量定义方法
1. 定义常量define("CONSTANT", "Hello world.");
常量只能包含标量数据(boolean,integer,float
和 string)。
调用常量时,只需要简单的用名称取得常量的值,而不能加“$”符号,如:echoCONSTANT;
注:
常量和(全局)变量在不同的名字空间中。这意味着例如 TRUE
和 $TRUE
是不同的。
2.普通变量$a = "hello";
3.可变变量(使用两个美元符号($))
$$a = "world";
两个变量都被定义了:
$a 的内容是“hello”并且 $hello
的内容是“world”。
因此,可以表述为:
echo "$a ${$a}";或者 echo "$a $hello";它们都会输出:hello world
要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1]
时,解析器需要知道是想要 $a[1]
作为一个变量呢,还是想要 $$a
作为一个变量并取出该变量中索引为 [1]
的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。
4.静态变量
在函数内部static $a =0;
注意:声明中用表达式的结果对其赋值会导致解析错误如static $a =3+3;(error)
静态变量仅在局部函数域中存在(函数内部),函数执行完之后,变量值不会丢失,可用于递归调用
5.全局变量
在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用,在全局范围内访问变量可以用特殊的
PHP 自定义 $GLOBALS
数组:
如:$GLOBALS["b"] = $GLOBALS["a"] +$GLOBALS["b"];
在一个函数域内用 global
语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用
global $obj;
注:对于变量的 static
和 global
定义是以应用的方式实现的
6.给变量赋值:传地址赋值(简单引用):
$bar = &$foo; //加&符号到将要赋值的变量前
改动新的变量将影响到原始变量,这种赋值操作更加快速
注意:只有命名变量才可以传地址赋值
注意:如果
$bar = &$a;
$bar = &$foo;
改变$bar的值只能改变变量foo的值,而不改变a的值(引用改变了)
7.PHP超全局变量$GLOBALS :包含一个引用指向每个当前脚本的全局范围内有效的变量。该数组的键标为全局变量的名称。从
PHP 3 开始存在 $GLOBALS
数组。
$_SERVER :变量由 Web
服务器设定或者直接与当前脚本的执行环境相关联。类似于旧数组 $HTTP_SERVER_VARS
数组(依然有效,但反对使用)。
$_GET :经由 HTTP GET
方法提交至脚本的变量。
$_POST :经由 HTTP POST
方法提交至脚本的变量。
$_COOKIE :经由 HTTP Cookies
方法提交至脚本的变量。
$_FILES :经由 HTTP POST
文件上传而提交至脚本的变量。
文件上传表单中要有 enctype="multipart/form-data"
$_ENV :执行环境提交至脚本的变量。
$_REQUEST :经由 GET,POST
和 COOKIE
机制提交至脚本的变量,因此该数组并不值得信任。所有包含在该数组中的变量的存在与否以及变量的顺序均按照 php.ini
中的variables_order
配置指示来定义。该数组没有直接模拟 PHP4.1.0
的早期版本。参见 import_request_variables()。
注意:自 PHP 4.3.0
起,$_FILES
中的文件信息不再存在于 $_REQUEST
中。
$_SESSION :当前注册给脚本会话的变量。
如何禁用phpinfo():
php.ini中
disable_functions = phpinfo()
重启web服务器。
php中的常量
常量只能用define(常量名,常量值);
常量只能包含标量数据(boolean,integer,float
和 string)。
可以简单的通过指定其名字来取得常量的值,不要在常量前面加上 $
符号。如果常量名是动态的,也可以用函数
constant() 来读取常量的值。用 get_defined_constants()
可以获得所有已定义的常量列表。
注:
常量和(全局)变量在不同的名字空间中。这意味着例如 TRUE
和 $TRUE
是不同的。
如果使用了一个未定义的常量,PHP
假定想要的是该常量本身的名字,如同用字符串调用它一样(CONSTANT
对应"CONSTANT")。此时将发出一个 E_NOTICE
级的错误。参见手册中为什么 $w3sky[bar]
是错误的(除非事先用 define()
将 bar
定义为一个常量)。如果只想检查是否定义了某常量,用 defined()
函数。
常量和变量不同:
* 常量前面没有美元符号($);
* 常量只能用 define()
函数定义,而不能通过赋值语句;
* 常量可以不用理会变量范围的规则而在任何地方定义和访问;
* 常量一旦定义就不能被重新定义或者取消定义;
* 常量的值只能是标量。
定义常量
define("CONSTANT", "Helloworld.");
echo CONSTANT; // outputs "Helloworld."
echo Constant; // outputs "Constant"and issues a notice.
?>
跳水比赛,10个评委打分,去掉一个最高分和一个最低分,然后求剩下的评委的分数总和的平均分为该运动员的得分,试输出给最高分的评委和给最低分的评委以及该运动员的得分。
答案如下:
12,"ms"=>9.0,"ok"=>7.1,"song"=>5.0,"bold"=>3.8,"know"=>2.7,"wow"=>1.7,"serial"=>7.9,"moder"=>7.6,"froke"=>6.7); function getMinMax($arr,$k=true){ //$k 为 true时输出最小值,为false 则输出最大值,还有平均数 $num=$arr["arial"];$sum=0;$s="arial"; foreach($arr as $i => $value){ if($k){ if($value<$num){ $num =$value;$s=$i; } }else { if($value>$num){ $num =$value;$s=$i; } } } $sum = array_sum($arr); return array($sum,$num,$s); } $newArr=getMinMax($arr,true); $sum=$newArr[0]-$newArr[1]; echo 'the lowest degree people is '.$newArr[2]."
"; unset($newArr); $newArr=getMinMax($arr,false); $sum -= $newArr[1]; echo '
the highest degree people is '.$newArr[2]; echo '
the average degree is '.$sum/(count($arr)-2); ?>
相关文章推荐
• 深入了解PHP:用gdb调试源码• 实例介绍:使用Docker快速搭建多版本PHP开发环境• 实例详解PHP统计代码行数及文件数量的方法• PHP利用MySQL保存session的实现思路及示例代码,mysqlsession_PHP教程• PHP常用开发工具分析_PHP教程独孤九贱(3)_JavaScript视频教程
javascript是运行在浏览器上的脚本语言,连续多年,被评为全球最受欢迎的编程语言。是前端开发必备三大法器中,最具杀伤力。如果前端开发是降龙十八掌,好么javascript就是第18掌:亢龙有悔。没有它,你的前端生涯是不完整的。《php.cn独孤九贱(3)-JavaScript视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了javascript知识。
JavaScript教程140342次播放
独孤九贱(6)_jQuery视频教程
jQuery是一个快速、简洁的JavaScript框架。设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。 核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等,是全球最流行的前端开发框架之一。PHP中文网根据最新版本,独家录制jQuery最新视频教程,回馈PHP中文网的新老用户。
jQuery教程115296次播放
jQuery与Ajax基础与实战
jQuery是最流行的JS函数库,封装了许多实用的功能,其中最引人入胜的就是Ajax。 jQuery中的Ajax操作,语法简单,操作方便,使Ajax从未如此轻松,前端人员从此不再为与服务器异步交互而发愁,本套课程,精选了最常用的几个方法,从基本的语法到每个参数,再到具体实例进行了全面的讲解。
AJAX教程14960次播放
Git教程(60分钟全程无废话版)
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持
JavaScript教程13037次播放