php7 定义变量,PHP7_变量_1_可变变量_变量作用域_预定义变量放在后边

ini_set("display_errors",true);//设置在页面显示错误

error_reporting(E_ALL);//设置错误级别,设置为全部显示

//变量

//命名规则,变量的命名以$符号开头,$紧跟其后的第一个字符应该以字母或下划线

//变量名区分字母大小写,在第一个字符之后可以是数字、字母以及下划线

//变量名正则表达方式为'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

//插言:声明变量最好的方式,就是直接给变量直接赋值

//PHP文档中写到过,原理不怎么懂,可能因为步骤多,但结果和过程都一样,后期回头看

$_02 = 'a';

// $12_ac = 'b';错误操作,不能以数字作为变量名的开头,

$var = 'c';

$Var = 'd';

// echo $var;

// echo "

";

// echo $Var;//变量区分大小写,$var和$Var是两个变量

$var_1 = $var;

// echo $var_1;

$var_1 = 'e';

// echo

$var.'---'.$Var;//变量$var_1在被赋值的后,改变后不影响从前的原始变量$var

//听说过写实复制,不知道是不是就体现在这里

//但当上述的$var_1 = &$var这样表达的时候,改变其中一个变量,都会改变原来的值

//引用赋值&

$name_var = "yan";

$word = &$name_var;

$word = "my name is

$word";

// if ($word == $name_var){var_dump($name_var);}//这里输出my name is yan

//$word在引用$name_var之后,改变了原始的$name_var

// 有一点重要事项必须指出,那就是只有有名字的变量才可以引用赋值。

$foo = 25;

$fooo = &$foo;

$fooo = 100;

// echo $foo;

// $bar = &(24 * 7);//语法错误

function example(){

return 50;

}

// $err = &example();//notice错误,但下边可以输出,使用引用变量的时候,不能使用没有名字的变量来作为被引用的值

// echo $err;

// $this = 'text'; // error,$this是特定的变量,用于类中表示自己

// $name = 'this';

// $$name = 'text'; // sets $this to 'text',这样也不可以

//+++++++++++++++++++++++++++++++++++++++++++

//预定义变量 +++++

//+++++++++++++++++++++++++++++++++++++++++++

//在php中,有一些预定义变量在命令行运行时并不能生效

//在php内register_globals默认时off影响预定义变量在全局范围内的有效性

//为了得到 DOCUMENT_ROOT 的值,将必须使用 $_SERVER['DOCUMENT_ROOT'] 代替

$DOCUMENT_ROOT

//虽然不能直接访问,但可以使用php内置的预定义数组来访问,这些数组在全局范围内都可以生效,被称为自动全局变量或超全局变量

//php中没有自定义超全局变量的机制

//变量范围(变量的作用域)

$a = 12;//

//在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。例如:

function test(){

global

$a;//2、但使用global声明为全局变量时,在调用函数,将使用上边的$a

$a = 23;//此处赋值后,函数不调用,$a不会被改变,一点调用函数test,$a的值也会被改为23

echo $a;//1、这个$a被php作为按照缺省情况,来限制在局部函数范围内,并不和上文的$a存在联系

}

// test();//没有global修饰将报错,如果被global修饰后,将等同于上文的$a

// echo $a;//函数调用的时候,并用global修饰函数内的$a时,$a被改变

//在C语言中,全局变量可以在函数内直接调用,但是在php中,想要在函数内部调用全局变量,就要在函数内部的变量前面用global来修饰

// var_dump($GLOBALS);打印全局变量

//静态变量,静态变量只存在于局部函数作用域中,当程序执行完之后,静态变量的值不丢失

function staticFunc()

{

$b = 0;

echo $b;

$b++;

}

function staticFunc2()

{

static $b = 0;

echo $b;

$b++;

}

// staticFunc();//不管调用多少次,函数执行完之后,$b被销毁,再次调用,$b初始值还会是0

//

staticFunc2();//调用了之后,静态变量$b不会消失,而是存在静态内存段中,在接下来每次调用的时候,$b都不会重置为0,此次输出结果为0

// staticFunc2();//输出结果为1

//测试自加自减

function staticFunc3()

{

$b = 0;

echo

++$b;//先++后使用,输出1

echo

$b++;//先被echo使用,后++输出1

echo $b;//输出2

}

// staticFunc3();

function staticFunc4()

{

$b = 0;

echo

--$b;//先--后被echo使用,输出-1

echo

$b--;//先输出-1,后--,此操作之后,$b变为-2

echo $b;//输出-2

}

// staticFunc4();

//静态变量与递归函数

function recursiceFunc(){

static $count = 0;

$count++;

echo $count;

if ($count <10) {

recursiceFunc();

}

// $count--;

// echo $count;

}

// recursiceFunc();//做递归的时候,一定要有充分的条件来停止递归运算

//递归的运算规律是从内向外运算的,内部运算结束后,才会返回上一级调用

//在函数中,不能让用表达式的方式来个静态变量赋值,比如static $a = 1+2;是错误的方式,php解析错误

// 在函数之外使用 global

关键字不算错。可以用于在一个函数之内包含文件时。意思是说,在函数之外可以使用global关键在来

//修饰一个变量,但是没有意义,因为函数之外的变量,本身就具有全局性,但是如果一个函数需要引用一个文件,这个文件内有一个变量,

//在函数外需要用到,那此时在这个被引入的文件内的变量要拥有全局性,就该使用global

//static的变量和global的变量都是属于变量的引用&,更改了值,源有的值也一起改变

class sample_class

{

public function

func_having_static_var($x = NULL)

{

static $var = 0;

if ($x === NULL)

{ return $var; }

$var = $x;

}

}

$a = new sample_class();

$b = new sample_class();

// echo $a->func_having_static_var()."\n";

// echo $b->func_having_static_var()."\n";

// // this will output (as expected):

// 0

// 0

// $a->func_having_static_var(3);

// echo $a->func_having_static_var()."\n";

// echo $b->func_having_static_var()."\n";

// 3

// 3

//可变变量以及可变函数

//可变变量的概念,就是一个$后边跟随着一个会变的名称,比如$$a,这时候,给$a不同的值,那$$a的变量名也不会相同

//可变变量与数组

$a = 'hello';

$e = 'cd';//字符串在php内部以数组形式表达,所以也可以用数组的方式来访问字符串内部的字符

$hello = ['as','de'];

$de = 'i am last

word';

echo ${${$a}[1]};

//在对数组做可变变量的时候,需要考虑一个问题,因为当给$$a[1]做可变变量时,需要告诉php,是给$a[1]的字符做可变变量,

//还是给$$a下的1做变量,区分两种方式是用{}括起来,前一种情况${$a[1]},后一种为${$a}[1]

//实际的用处很给力,可以减少很多操作

//1、当我们接受一个表单提交时,有post过来的值,可以这样做来代替成堆的$_POST出现

foreach($_POST as $key=>$value){

$$key=$value;

}

//这样对应$_POST下的所有$key的值就都做好赋值了,记得要做好过滤

//可变函数,可变函数也是拿表单提交来距离,前端传一个class的名,和一个function的名

//我们可以这样来实例化一个类以及调用方法,$foo = new

$_GET['classname']();$foo->$_GET['funcname']();

//注意:在 PHP 的函数和类的方法中,超全局变量不能用作可变变量。$this

变量也是一个特殊变量,不能被动态引用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值