@javalaw2010
2015-08-17T11:47:26.000000Z
字数 2672
阅读 1195
PHP
html
,css
,javascript
等web基础不表,但仍保留数据库等内容;函数与变量
局部变量:在函数内部声明的变量,作用域仅限于函数内部,在外部使用该变量是非法的;
全局变量:在函数外定义的变量,作用域从变量定义处开始到程序文件末尾结束;
函数中无法直接调用全局变量,需要使用global
关键字定义变量,或者使用$GLOBALS
数组。
静态变量
function test(){
static $a = o; //静态变量使用static关键字修饰
echo $a;
$a++;
}
test(); //输出0
test(); //输出1
test(); //输出2
4.可变个数参数的函数
function more_args(){ //不声明传入参数的个数,使用func_get_args()获取传入的参数
$args = func_get_args();
for($i = 0;$i<count($args);$i++){
echo $args[$i];
}
}
//或者使用以下的形式
function more_args(){
for($i = 0; $i<func_num_args();$i++){ //使用func_num_args()返回参数的总数
echo func_get_arg($i); //使用func_get_arg()返回指定的参数
}
}
function one($a,$b){ //定义一个函数
return $a+$b;
}
$result = "one"; //将函数名作为字符串赋值给字符串变量
echo $result(2,3); //使用字符串变量+`()`调用函数
2.使用变量函数声明和应用回调函数
function filter($fun){
for($i = 0;$i<= 100;$i++){
if($fun($i)) //变量函数调用
continue;
echo $i.' ';
}
}
function one($num){ //如果参数是3的倍数就返回true,否则返回false
return $num%3 == 0;
}
filter("one");
3.借助call_user_func_array()
自定义回调函数
function fun($str1,$str2){
echo $str1.$str2;
}
call_user_func_array('fun',array('LAMP','PHP'));
4.类静态函数和对象的方法回调
/*声明一个类demo,类中声明一个静态的成员方法fun() */
class Demo{
static function fun($str1,$str2){
echo $str1.$str2;
}
}
call_user_array(array("Demo",'fun'),array('LAMP','PHP'));
/*第一个参数必须使用数组,数组需要指定两个元素,第一个元素为类名称,第二个元素为静态方法名称*/
/*声明一个类demo,类中声明一个普通的成员方法fun() */
class Test{
function fun($str1,$str2){
echo $str1.$str2;
}
}
call_user_array(array(new Test(),'fun'),array('LAMP','PHP'));
/*第一个参数必须使用数组,数组需要指定两个元素,第一个元素为对象的引用,第二个元素为静态方法名称*/
require()
,include()
,require_once()
,include_once()
根据PHP手册所述:
require
和include
几乎完全一样,除了处理失败的方式不同之外。require
在出错时产生 E_COMPILE_ERROR 级别的错误。换句话说将导致脚本中止而include
只产生警告(E_WARNING),脚本会继续运行。
基于手册这样的描述,我个人认为一般情况下没有必要太过于纠结使用require
还是include
的问题。
然而我仍然会将这两个的不同点和适用情况收录进笔记中。
include
执行文件时每次都要进行读取和评估,require
只处理一次文件(实际上文件内容替换了require
语句)- 可能执行多次的代码,使用
require
的效率比较高,每次执行代码时读取不同的文件,或者有通过一组文件迭代的循环,使用include
较好。include
一般在流程控制区段中使用,而require
一般在文件开头或者末尾使用。(但并非必须如此)
$arr[]='a'; //下标为0
$arr[]='b'; //下标为1
$arr[]='c'; //下标为2
如果没有指定索引值的元素与指定索引值的元素混在一起赋值,没有指定索引值的元素的默认索引值将紧跟指定索引值元素中的最高的索引值递增:
$arr[]='a';//下标为0
$arr[3]='b';//下标为3
$arr[]='c';//下标为4
2.使用foreach
遍历数组
$arr = array('a','b','c');
//第一种方式
$num = 0;
foreach($arr as $value){
echo "$num:$value";
$num++;
}
//第二种方式
foreach($arr as $key => $value){
echo "$key:$value";
}
3.each()
,list()
和while
联合循环遍历数组
each()
函数需要一个数组作为参数,返回当前的键值对,并将数组指针移动到下一个元素上,键值对返回有4个元素的数组,键名分别问,0
,1
,key
,value
,其中,0
,key
对应的值相同,1
,value
对应的值相同。当指针溢出时,返回false
.
list()
用一步操作给一组变量赋值:
$info = array('coffee','brown','coffeine');
list($drink,$color,$power) = $info;
结合起来使用while
遍历数组:
while(list($key,$value) = each(array_exception)){
循环体
}