与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。
变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。
PHP 变量规则:
PHP 没有声明变量的命令。
变量在您第一次赋值给它的时候被创建:
$txt = " Hello world! " ; $x = 5 ; $y = 10 .5 ;在上面的语句执行中,变量 txt 将保存值 Hello world! ,且变量 x 将保存值 5 。
注释: 当您赋一个文本值给变量时,请在文本值两侧加上引号。
在上面的实例中,我们注意到,不必向 PHP 声明该变量的数据类型。
PHP 会根据变量的值,自动把变量转换为正确的数据类型。
在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。
变量的作用域是脚本中变量可被引用/使用的部分。
PHP 有四种不同的变量作用域:
当我们调用myTest()函数并输出两个变量的值, 函数将会输出局部变量 $y 的值,但是不能输出 $x 的值,因为 $x 变量在函数外定义,无法在函数内使用,如果要在一个函数中访问一个全局变量,需要使用 global 关键字。 然后我们在myTest()函数外输出两个变量的值,函数将会输出全局变量 $x 的值,但是不能输出 $y 的值,因为 $y 变量在函数中定义,属于局部变量。
你可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。 PHP global 关键字global 关键字用于函数内访问全局变量。
在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:
$x = 5 ; $y = 10 ; function myTest ( ) global $x , $y ; $y = $x + $y ; myTest ( ) ; echo $y ; // 输出 15PHP 将所有全局变量存储在一个名为 $GLOBALS[ index ] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
上面的实例可以写成这样:
$x = 5 ; $y = 10 ; function myTest ( ) $GLOBALS [ ' y ' ] = $GLOBALS [ ' x ' ] + $GLOBALS [ ' y ' ] ; myTest ( ) ; echo $y ;当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
要做到这一点,请在您第一次声明变量时使用 static 关键字:
function myTest ( ) static $x = 0 ; echo $x ; $x ++; echo PHP_EOL ; // 换行符 myTest ( ) ; myTest ( ) ; myTest ( ) ;然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。
注释: 该变量仍然是函数的局部变量。
参数是通过调用代码将值传递给函数的局部变量。
参数是在参数列表中声明的,作为函数声明的一部分:
function myTest ( $x ) echo $x ; myTest ( 5 ) ;我们将在 PHP 函数 章节对它做更详细的讨论。
佛系coder
222***[email protected]
南宫晟醺
132***[email protected]
2、global(总体的)—— 全局变量的作用域
在所有函数外部定义的变量是全局变量,除了函数外,全局变量可以被脚本中的任何部分访问、要在一个函数中访问一个全局变量,需要使用 global 关键字。
$x = 5; $y = 10; $z = 0; function test() global$x,$y,$z; $z = $x + $y; test(); echo $z;结果: 15
PHP 将所有的全局变量存储在一个名为 $GLOBALS[index] 的数组里, index 保存变量的名称。
这个数组可以在函数内部访问,也可以直接用来更新全局变量。
$x = 5; $y = 10; $z = 0; function test() $GLOBALS['z'] = $GLOBALS['x']+$GLOBALS['y']; Test(); echo $z;结果: 15
3、static(静态的)—— static 作用域当一个函数执行完成时,它的所有变量通常都会被删除。
然而,有时需要局部变量不要被删除,要做到这一点,请在您第一次声明变量时使用 static 关键字。
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
function test() { static $x=0; echo $x . " "; $x++; test(); test(); test(); test();结果: 0 1 2 3
每次调用函数时, 该变量将会保留请前函的前被调用的值一次。
4、parameter(参数)——参数作用域参数是通过调用代码将值传递给函数的局部变量。
关于局部变量和全局变量的优先级,因为在PHP中函数都有自己单独的作用域,所以在局部变量的优先级要大于全局变量(在你不声明这个变量之前),声明之后此变量就变成了局部变量如果修改值那么全局变量的值也会改变。
$a = 10; $b = 5; function test() $a = 15; $b = 5; $z = $a-$b; echo $z; test(); function test1() global $a,$b; $a = 15; $b = 5; $z = $a-$b; echo PHP_EOL; echo $z; test1(); function test2() global $a,$b; $z= $a-$b; echo PHP_EOL; echo $z; test2();结果: 10 10 10
假设你正在开发一个在线商店,你需要定义一个“产品”类来管理你的所有产品。每个产品都有一些共同的属性,例如名称、描述、价格等,同时也有一些不同的属性,例如尺寸、颜色、重量等。
在这个场景中,我们可以将每个产品看作一个类,而每个产品的属性和方法看作该类的属性和方法。例如,你可以定义一个名为“Product”的类来代表你的产品,该类可以有以下属性和方法:
假设你是一名学生,你所在的学校有许多教师,每个教师都有自己的一些特殊技能,例如画画、打篮球等。在这个场景中,我们可以将每个教师看作一个类,而每个技能看作这个类的属性或方法。
当你需要学习一项特定的技能时,你就需要找到具有该技能的教师,并向他学习。在这个过程中,你只能访问到这个教师的技能,而不能访问到其他教师的技能。这是因为每个教师的技能只属于这个教师的类作用域。
假设你是一个在一家公司工作的员工,你的公司有一个设备,可以记录员工的出勤天数。每当你到达公司并上班时,你就需要使用这个设备打卡,以记录你的出勤时间。
类比到编程中,静态变量也可以在函数的多次调用之间共享状态,并在下一次调用函数时使用,从而提高代码的效率和可维护性。
假设你是一位房屋中介,你的客户希望租一套房子。你的任务是为他们找到一个合适的房子。为了实现这个目标,你需要了解客户的要求,例如他们想要几个卧室、几个卫生间等等。这些要求就可以看作是函数的参数。
类比到编程中,参数作用域就是指函数的参数只在函数内部有效,对于函数外部的代码来说是不可见的。这意味着在函数内部你可以使用这些参数进行一些操作,而不需要担心这些操作会对其他代码造成影响。