PHP学习记录之变量
前言
考虑到性能测试中经常接触到web后端的php文件,并且个人博客建站也是基于php的,所以准备了解一哈这个号称是世界上最好的语言的语言。
变量
命名
//变量名区分大小写;
//变量不能数字开头;
//变量名只能包含字母数字字符以及下划线;
$name = 'wangyi';
var_dump($name); //string(6)"wangyi"
$name = 12222;
var_dump($name); //int(12222)
// $123 = 1; error
echo "<br>";
isset和unset
$age = '18';
$res = isset($age);
echo $res; // 1
var_dump($res); // bool(true)
echo "<br>";
$name = null;
echo "name的值是:",$name; // 输出为空
var_dump($name); // NULL
$res = isset($name);
echo $res; //空
var_dump($res); //bool(false)
$haha = 666;
unset($haha); //去除的是变量中保存的内存地址
var_dump($haha); // error,undefined variable
值传递
/ /赋值传值
附上一张网上找的图,画的很详细:
$a=111;
$b=$a; //重新开辟一块内存空间
echo $b; // 111
$a=222;
echo $b; // 111
echo '<br>';
$c=333;
$d=$c;
$d=444;
echo $c; // 333
echo '<br>';
//引用传值,php中&符号能改变传值方式
$a=1;
$b=&$a; //变量b保存的内存地址和变量a一致,指向同一片内存
$b=2;
echo "a的值是:",$a;// 2 ,在内存上2直接覆盖1
echo '<br>';
$a=3;
echo $b; // 3
unset($a);
echo $b; // 3
echo '=============================================';
/*
注意:
python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值,相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象,相当于通过“传值'来传递对象。
*/
变量作用域
//局部变量和全局变量,global关键字
$a = 1;
$c = 3;
function test(){
echo $a;// error
$b = 2;
echo $b;// 2
global $a,$c; //全局声明
echo $a; // 1
echo "<br>";
$c = $c + $b;
echo $c; // 5,这还是全局变量
echo "<br>";
//PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来访问全局变量。
//上面两行等价于下面:
$GLOBALS['c'] = $GLOBALS['c'] + $b;
echo $c;// 7
}
test();
echo "<br>";
echo $a; // 1
echo $b; //error,外不能调用内的
echo $c; // 7
echo '<br>';
Static 作用域
function test2(){
$a=1;
echo $a; //1
$a++;
echo '<br>';
}
//当一个函数完成时,它的所有变量通常都会被删除。
test2(); //a=1
test2(); //a=1
function test3(){
static $a=1;
echo $a; //1
$a++;
echo '<br>';
}
//使用static关键字之后每次调用该函数时,该变量将会保留着函数前一次被调用时的值。该变量仍然是函数的局部变量。
test3(); //a=1
test3(); //a=2
test3(); //a=3
预定义变量
$_GET变量
预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。
$_POST变量
与get一样,不过在地址栏中不展示。
或者两段代码放在一起:
$_REQUEST变量
$_REQUEST变量是get和post的通用版,用了它无论是get请求还是post都可以。
$_SERVER变量
$_SERVER变量记录的是网站访问者的系统信息。
PHP_SELF: 表示当前请求的网页地址,不含域名部分
SERVER_NAME: 表示当前请求的服务器名
SERVER_ADDR: 表示当前请求的服务器IP地址
DOCUMENT_ROOT: 表示当前请求的网站物理路径
REMOTE_ADDR: 表示当前请求的客户端的IP地址
SCRIPT_NAME: 表示当前网页地址
可变变量
$a=1;
echo $a; // 1
$b='a';
echo $$b; // 1,$$b就是所谓的可变变量
常量
// 1、常量是一个简单值的标识符。该值在脚本中不能改变,不可重新赋值。
// 2、一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
// 3、常量在定义后,默认是全局变量,在整个脚本中都可以使用。
// 两种定义形式,define()函数形式和const关键字形式
define('pi', 3.1415926);
define('PI', 3.1415927,true); //error,不区分大小写提示变量已存在
function test11(){
echo pi; //3.1415926
}
test11();
//const 关键字定义常量
const PI = 3.1416;
判断常量是否存在
if (defined('PI')) {
echo "常量PI已经存在";
}