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已经存在";
}

 

posted @ 2020-02-20 01:07  天青色wy  阅读(153)  评论(0编辑  收藏  举报