问答题:
什么是变量的作用域?
首先在一个PHP文件中,定义在<?php ?>标签中的变量,就是一个全局变量,这个变量的作用域是除了被引用的函数的全局,因为在某个函数中,是无法直接引用全局变量的,函数的创建,相当于重新创造了一个域。
如果要在函数中使用全局变量有两种方式,如下:
实例1:全局变量
<?php $a = 100; //这里的$a是全局变量 function a() { return $a; //这里的$a是局部变量 } echo a().'<br>'; //报错,函数中获取不到$a,无法输出 $b = 200; function b() { global $b; return $b.'<br>'; } echo b().'<br>'; $GLOBALS['c'] = 300; function c() { return $GLOBALS['c'].'<br>'; } echo c().'<br>';
运行实例 »
点击 "运行实例" 按钮查看在线实例
静态变量,通常情况下,函数中的变量在函数执行完毕后,就会被释放,如果在函数执行完毕后,函数内部的变量值被保存下来供下一次执行时使用,则称之为静态变量。如下
实例2:静态变量
<?php function i() { $i = 1; return '这是第'.$i.'次执行'.$i++.'<br>'; } echo i(); echo i(); echo i(); echo '<hr>'; function j() { static $j = 1; return '这是第'.$j.'次执行'.$j++.'<br>'; } echo j(); echo j(); echo j();
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例3:变量类型的检测
<?php class foo // 创建一个对象 { function do_foo() { echo 'do foo'; } } $class = new foo; var_dump($class); //检测为Object echo '<hr>'; $int = 10; var_dump($int); //检测为整形(integer) echo '<hr>'; $float = 10.2213; var_dump($float); //检测为浮点型(float) echo '<hr>'; $str = 'Hello, World!'; var_dump($str); //检测为字符串(string) echo '<hr>'; $arr = [1,2,3,4,5,6,7,9]; var_dump($arr); //检测为数组类型(array) echo '<hr>'; $bool = true; var_dump($bool); //检测为布尔型(boolean) echo '<hr>'; $null = null; var_dump($null); //检测为NULL echo '<hr>';
运行实例 »点击 "运行实例" 按钮查看在线实例
实例4:分支结构
<?php /** *找出1-100中可以被7和3整除的整数。 */ for ($i=1;$i<=100;$i++){ echo ($i%7 == 1 && $i%3 == 1) ? $i.' ' : ''; } echo '<br>'; /** * 以整点为界的时间判断 */ $hour = -5; if ($hour >= 0 && $hour < 6){ echo '大半夜还不睡觉?'; }elseif($hour >=6 && $hour < 8){ echo '清晨好!'; }elseif($hour >=8 && $hour < 12){ echo '上午好!'; }elseif($hour >=12 && $hour < 13){ echo '中午好!赶紧趴一会,中午不睡,下午崩溃!'; }elseif($hour >=13 && $hour < 17){ echo '下午好!'; }elseif($hour >=17 && $hour < 18){ echo '吃个晚饭!'; }elseif($hour >=18 && $hour < 20){ echo '饭后运动一下!'; }elseif($hour >=20 && $hour < 22){ echo '赶紧去php.cn上课了!'; }elseif($hour >=22 && $hour < 24){ echo '早点洗洗睡吧!'; }else{ echo '怎么的?你们家时间是负数的还是一天有25小时?'; }
运行实例 »点击 "运行实例" 按钮查看在线实例