变量
这个是变量示例,注意自己声明的变量需要注意生效作用域
<?php
//变量名由字母(A-Z、a-z 或 128 到 255 之间的字节)或者下划线开头
$var = '100'; //变量声明
echo $var . "<br>";
$var = '200'; //变量重新赋值
echo $var . "<br>";
function fun1()
{
echo $var; // *** 会报错,找不到外面变量范围的 $var ***
}
function fun2()
{
global $var;
echo $var; //不报错,通过 global $var; 语法可以声明外面有 $var
}
?>
预定义全局变量
php自身提供了一些变量,但是这些变量是全局性的,在函数内部也能用,任何php里面都可以用。也叫全局变量,超全局变了,php预定义变量。列表如下
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
php还有$http_response_header变量,这个变量需要file_get_content来获取才填充,并且在外部范围里面是不能用的,还是需要重新file_get_content
例如
<?php
function get_contents() {
file_get_contents("http://example.com");
var_dump($http_response_header); // 变量在本地作用域中填充
}
get_contents();
var_dump($http_response_header); // 调用 get_contents() 不会在函数作用域之外填充变量
?>
另外,php.exe直接运行某个php文件的时候,可以带参数,但是需要php.ini打开register_argc_argv = On,其中register_argc_argv前面的;分号需要去掉,后面不要带分号。这个参数可以通过$argc获取参数个数,$argv获取参数数组。例如
php index.php 100 200
<?php
echo '$argc=' . $argc . ' ' . $_SERVER['argc'] . "<br>";
?>
自己声明全局变量
(效果和预定义全局变量作用于类似,并且可以跨多个php生效)。注意这个所谓全局只在一次请求中可以跨多个变量域和多个php生效,一旦重新请求,所谓的自己定义的全局变量是回复状态,需要重新赋值的。
<?php
$message = "Hello, world!";
function changeMessage() {
$GLOBALS['message'] = "Hello from function!";
}
changeMessage();
echo $message; // 输出: Hello from function!
?>
获取客户端发送来的变量
<form action="submit.php?mygetvar=300" method="POST">
名字: <input type="text" name="username"><br />
体重: <input type="text" name="weight"><br />
<input type="submit" name="submit" value="提交!" />
</form>
在submit.php里面可以通过$GET, $POST, $REQUEST来获取变量,其中$REQUEST是$GET, $POST, $COOKIE等多次地方的值的混合,不要用$REQUEST来编程,容易混淆。
<?php
echo $GET['mygetvar'];
echo $POST['username'];
echo $POST['weight'];
?>
还可以用COOKIE功能跨多次请求保存变量状态
//下面代码设置Cookie1变量(值为'AAA'), 设置Cookie2变量(值为数组['BBB', 'CCC']),变量范围是1个小时
setcookie("MyCookie1", 'AAA', time()+3600);
setcookie("MyCookie2[a]", 'BBB', time()+3600);
setcookie("MyCookie2[b]", 'CCC', time()+3600);
//下面代码设置的是会话cookie,关掉浏览器或者裸输URL都会失效。(关键是第三个生效时间参数不要传值)
setcookie("MyCookie4", "AAA"); // 或者:setcookie("MyCookie1", "AAA", 0);
setcookie("MyCookie5[a]", "BBB");
setcookie("MyCookie5[b]", "CCC");
读取的时候可以这样
<?php
echo $_COOKIE['MyCookie1']; //值是字符串
print_r($_COOKIE['MyCookie5']); //值是数组
常量的使用
function a(...$values)
{
$all = '';
foreach ($values as $value) {
$ret = print_r($value, true);
if (strlen($all) > 0)
$all .= ' ';
$all .= $ret;
}
$all .= '<br>';
echo $all;
}
// 常量语法有const方法和define()方法
//const方法,(注意const语法只能容纳 string、int、float、bool四种值)
const MyConst1 = 'Hello World';
//define()方法,可以容纳计算的表达式值、数组、符合类型等
define('MyConst2', 300);
define('MyConst3', 'World Hello');
define('MyConst4', array('A', 'B', 'C'));
a('MyConst1', MyConst1);
a('MyConst4', MyConst4);
a('MyConst4[0]', MyConst4[0]);
输出
MyConst1 Hello World
MyConst4 Array
(
[0] => A
[1] => B
[2] => C
)
MyConst4[0] A