1 php是一种脚本 语言,可以像js一样,嵌入到html中。
(1)在html中,是通过php标记识别php代码的
<?php
echo "hello world";
?>
(2)单独存在的php文件,不常用结束标记符
由于php很多代码的书写并不是嵌入到html中,是单独存在的,所以不需要结束标记符,php会自动从开始到结束全部认为是php代码。从而解析。
2 php定义变量
不需要使用任何关键字定义变量
(1)定义并赋值变量$num
$num = 1;
echo "$num"; //2
(2)修改变量
$num = 2;
(3)删除变量(从内存中释放)
unset($num);
(4) 变量命名规则
----可行命名
$num; $num1;$num_1; $_num;
!!以数字开头是不可行的
$1_num;
(5)php预定义变量,都是数组
- $GLOBALS
- $_SERVER 服务器信息
- $_REQUEST GET和POST提交的都会保存
- $_POST POST方式提交的数据
- $_GET GET方式提交的数据
- $_FILES 用户上传的文件信息
- $_ENV 环境信息
- $_COOKIE cookie会话信息
- $_SESSION session会话信息
$_GET
自动存储”(保存/装载)提交到某个文件中的GET数据。
$name = $_GET['name']
$age = $_GET['age']
$_POST
$_POST变量里面会“自动存储”(保存/装载)提交到某个文件中的POST数据。
$name = $_POST['name']
$age = $_POST['age']
$_SERVER
服务器信息
array(41) {
["PATH"]=>
string(655) "D:\ruanjian\Xshell6\;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;D:\python27\Scripts\;D:\python27\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;D:\python37\;D:\python37\Scripts\;C:\Program Files\TortoiseGit\bin;D:\ruanjian\Git\cmd;D:\phpstudy\PHPTutorial\MySQL\bin;D:\ruanjian\node\;C:\composer;D:\phpstudy\PHPTutorial\php\php-7.2.1-nts;D:\redis\;C:\Users\86187\AppData\Local\Microsoft\WindowsApps;D:\PyCharm Community Edition 2018.3.4\bin;D:\ruanjian\PyCharm 2019.1.1\bin;C:\Users\86187\AppData\Roaming\npm;C:\Users\86187\AppData\Roaming\Composer\vendor\bin"
["SYSTEMROOT"]=>
string(10) "C:\Windows"
["COMSPEC"]=>
string(27) "C:\Windows\system32\cmd.exe"
["PATHEXT"]=>
string(62) ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW"
["WINDIR"]=>
string(10) "C:\Windows"
["PHP_FCGI_MAX_REQUESTS"]=>
string(4) "1000"
["PHPRC"]=>
string(42) "D:/phpstudy/PHPTutorial/php/php-7.2.1-nts/"
["_FCGI_SHUTDOWN_EVENT_"]=>
string(4) "2244"
["SCRIPT_NAME"]=>
string(40) "/practice/basics/predefined_variable.php"
["REQUEST_URI"]=>
string(40) "/practice/basics/predefined_variable.php"
["QUERY_STRING"]=>
string(0) ""
["REQUEST_METHOD"]=>
string(3) "GET"
["SERVER_PROTOCOL"]=>
string(8) "HTTP/1.1"
["GATEWAY_INTERFACE"]=>
string(7) "CGI/1.1"
["REMOTE_PORT"]=>
string(5) "58627"
["SCRIPT_FILENAME"]=>
string(46) "D:/php/practice/basics/predefined_variable.php"
["SERVER_ADMIN"]=>
string(12) "admin@php.cn"
["CONTEXT_DOCUMENT_ROOT"]=>
string(6) "D:/php"
["CONTEXT_PREFIX"]=>
string(0) ""
["REQUEST_SCHEME"]=>
string(4) "http"
["DOCUMENT_ROOT"]=>
string(6) "D:/php"
["REMOTE_ADDR"]=>
string(9) "127.0.0.1"
["SERVER_PORT"]=>
string(2) "80"
["SERVER_ADDR"]=>
string(9) "127.0.0.1"
["SERVER_NAME"]=>
string(12) "www.2019.com"
["SERVER_SOFTWARE"]=>
string(52) "Apache/2.4.23 (Win32) OpenSSL/1.0.2j mod_fcgid/2.3.9"
["SERVER_SIGNATURE"]=>
string(0) ""
["SystemRoot"]=>
string(10) "C:\Windows"
["HTTP_COOKIE"]=>
string(115) "BJYSESSION=efudbrjcloadr1vgeq61uavo3r; read=think%3A%7B%2218%22%3A%221561550462%22%2C%2217%22%3A%221561551333%22%7D"
["HTTP_ACCEPT_LANGUAGE"]=>
string(33) "zh-CN,zh;q=0.9,und;q=0.8,en;q=0.7"
["HTTP_ACCEPT_ENCODING"]=>
string(13) "gzip, deflate"
["HTTP_ACCEPT"]=>
string(118) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
["HTTP_USER_AGENT"]=>
string(110) "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
["HTTP_UPGRADE_INSECURE_REQUESTS"]=>
string(1) "1"
["HTTP_CACHE_CONTROL"]=>
string(9) "max-age=0"
["HTTP_CONNECTION"]=>
string(5) "close"
["HTTP_HOST"]=>
string(12) "www.2019.com"
["FCGI_ROLE"]=>
string(9) "RESPONDER"
["PHP_SELF"]=>
string(40) "/practice/basics/predefined_variable.php"
["REQUEST_TIME_FLOAT"]=>
float(1561619312.9901)
["REQUEST_TIME"]=>
int(1561619312)
}
(6)可变变量
//如果我想访问$b的值,但我不直接访问,通过别的变量去访问
$b = "123";
$a = 'b';
//先访问$a的值,拿到b,再在b的前面加上$符号,访问的就是$b
echo $$a; //123
(7)变量传值
值传递:将变量保存的值复制一份,然后将新的值复制给另一个变量。
我有一个苹果,我再复制一个苹果,把新的苹果给你,你咬到的是新苹果,跟我这个苹果没关系
引用传递:将变量保存的值所在的内存地址,传递给另外一个变量,两个变量指向同一块内存空间。
我有一个苹果,我直接把这个苹果给你。你咬了,就跟我咬的是同一个苹果。
(1)值传递,拿到变量存储的值,复制,放到新的内存空间,修改a变量,不会影响到b变量
$a = 1;
$b = $a; //现在$b = 1;
$b = 2; //修改$b,现在$b的值是2
echo $a,$b; //1,2
(2)引用传递,拿到变量存储值的内存地址,存储,两个变量都指向同一个内存空间,修改a变量,会影响到b变量
$a = 1;
$b = &$a; //现在b存的是a的内存地址里的值, b是1
$b = 2; //修改b变量,会影响到a变量
echo $a, $b;//a和b 都是2