超全局变量 $GLOBALS 使用
全局变量的使用 global
静态变量的使用
全局变量如果没有定义,必须要先声明,再赋值,不能直接赋值
获取文件的变量名
strtolower(pathinfo(abs.php,PATHINFO_EXTENSION));
小写 通过pathinfo返回扩展名
global 定义全局变量
如何在函数体内使用全局变量?
都是i=i+1的意思,区别在于i++是i先不自加,在语句完后自加,++i先自加;列如a=1+i++;i本来为1的话,这里a=1+1;语句完后i才加1为2;
a=1+++i的话就先i=i+1;i=2.然后a=i+1,a=3
在函数外定义的变量称之为全局变量;在函数内同样无法直接使用!
要想在函数内使用全局变量:
1、通过global关键字:
<?php $i = 1; $j = 2; function glo(){ global $i;//或者写成global $i,$j; global $j; $sum = $i + $j; return $sum; } echo glo();//输出3
需要注意的是,当在函数内用global关键字使用了全局变量时,如果重新给全局变量赋值,则会改变全局变量的值:
<?php $i = 1; $j = 2; function glo(){ global $i;//或者写成global $i,$j; global $j; $i = 3; $j = 5; } glo();//相当于global打通了函数内外 echo $i,$j;//此时输出3 5,而不再是1 2! //在函数体内创建全局变量: function glo1(){ global $m,$n;//注意不能在创建的同时给变量赋值:global $m = 1;会报错! $m = 1; $n = 2; } glo1(); echo $m,$n;
2、通过$GLOBALS超全局变量:$GLOBALS['变量名']
<?php function jubu(){ $i = 1; $j = 2; } jubu(); $m = 5; print_r($GLOBALS) ;//以数组形式包含所有全局变量,键名为变量名,键值为变量的值; print_r($GLOBALS['m']);//输出5
局部变量=》动态变量与静态变量的区别:
1、动态变量在函数执行完之后立即被释放;
2、静态变量,由关键字static申明,当第一次调用函数的时候相当于初始化静态变量,当函数执行完毕之后静态变量并没有被释放而是保存在静态内存中,当再次调用函数的时候首先静态内存中取出变量的值接着执行!
<?php function sta(){ static $i = 1; $i++; return $i; } echo sta()."<br>"; //输出2 echo sta()."<br>"; //输出3 echo sta()."<br>"; //输出4 echo "<hr>"; function notSta(){ $i = 1; $i++; return $i; } echo notSta()."<br>";//输出2 echo notSta()."<br>";//输出2 echo notSta()."<br>";//输出2
全局变量
静态变量
动态变量
变量的作用域
函数是封装了一段可执行的代码段,
变量是用于保存值(x=5)和表达式(z=x+y)
php里变量和函数都可以随时调用
变量八种数据类型: 四种标量类型: string(字符串) integer(整型) float(浮点型,也作 double ) boolean(布尔型) 两种复合类型: array(数组) object(对象) 两种特殊类型: resource(资源) NULL(空)
字符串连接 如果$a是'a'的话 $a.='bbb' 那$a的值应该是'abbb'; 同样的顺带有+=,-=,*=,/=
$a = 1; $a = $a + 1; //上面的代码等同于下面的 $a += 1; |
结论: += 实际就是变量的累加值,
<? $ = 1; $ += 1; #在这里 , 这个表达式 等效于 : $ = $num + 1; #同理(注意 += 之间不能有空格;下同) # $num -= 1 ; 等效于 $num = $num - 1; # $num /= 1 ; 等效于 $num = $num / 1; # $num *= 1 ; 等效于 $num = $num * 1; # $num %= 1 ; 等效于 $num = $num % 1; # $str .= 'another string' ; 等效于 $str = $str . 'another string'; echo $num; echo '<hr>'; $n = 12; $n =+ 1; #这个表达式 $n = +1; 即 $n = (+1); 在这里 + 代表正值的意思 echo $n; ?>
echo是PHP语句,print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
print只能打印出简单类型变量的值(如int,string)
print_r可以打印出复杂类型变量的值(如数组,对象)
1.echo |
print_r()和var_dump()的区别是:print_r()返回结果,var_dump()返回结果中带有类型 两者都可以输出array、mixed~ |
echo 是输出(例如:echo ‘html代码’或者 echo $变量) return 是返回值
return为返回值却不输出,若想有输出需要再次使用echo输出。