欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php变量入门教程,php变量基础知识

程序员文章站 2022-05-31 18:34:52
...
  1. $a = 'hello';
  2. function test() {
  3. var_dump($a);
  4. }
  5. // test();
  6. include 'b.inc';
复制代码

b.inc内容:

  1. echo 'hello';
  2. ?>
复制代码

该程序能够正常输出hello,但是被注释掉的test()不能正常解析,因为变量$a是未定义的。

4、使用全局变量 若在某个函数中想使用全局变量,可以通过下面两种方式。

global关键字 global $a, $b; 在函数中声明全局变量后,对任一变量的所有引用都会指向其全局版本。

$GLOBALS超全局变量数组 $GLOBALS['b'] = $GLOBALS['a'] + $BLOBALS['b']; 用法同global关键字相似。

5、静态变量 静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。并且,只在声明时初始化一次,每次调用函数并不会覆盖静态函数的值。

静态变量在声明中用表达式的结果对其赋值会导致解析错误,静态声明是在编译时解析的。

  1. function test() {
  2. static $cnt = 0;
  3. echo $cnt;
  4. $cnt++;
  5. if($cnt test();
  6. }
  7. $cnt--;
  8. }
  9. test();
复制代码

和C语言的static相似,下面这段C代码也可以把0~9十个数字依次输出。

  1. #include
  2. void test(void) {
  3. static int cnt = 0;
  4. printf("%d ", cnt);
  5. cnt++;
  6. if(cnt test();
  7. }
  8. cnt--;
  9. }
  10. int main(void) {
  11. test();
  12. return 0;
  13. }
复制代码

对于变量的static和global定义是以引用的方式实现的。

5、可变变量 可变变量是PHP语言中的一种特殊用法,不知其他语言存不存在。

简而言之,可变变量就是,一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。

  1. $a = 'hello';
  2. $$a = 'world';
  3. echo "$a $$a"; // hello $hello
  4. echo "$a ${$a}"; // hello world
复制代码

当可变变量用于数组时,可能会出现模棱两可的问题。比如,写下$$a[1],编译器会报错的,你想要表达的意思需要用下面两种方式替换掉。

${$a[1]} $a[1]作为一个变量

${$a}[1] $$a作为一个变量并取出变量中索引为1的值。

6、表单变量 当表单提交给PHP脚本时,表单中的信息自动在脚本中可用,可以通过$_GET[]、$_POST[]和$_REQUEST[]访问。

注意,变量名中的点和空格被转换成下划线。例如变成了$_REQUEST["a_b"],下面的示例中展示了表单中标识符的使用。

复制代码

表单处理文件process.php。

  1. var_dump(isset($_POST['my.text']));
  2. var_dump(isset($_POST['mytext']));
  3. var_dump(isset($_POST['my_text']));
  4. var_dump($_POST['my_text']);
复制代码

因为句点不是PHP变量名中的合法字符,输出结果: boolean false boolean false boolean true

string 'h3' (length=2) magic_quotes_gpc配置指令影响到get/post/cooie的值,这个特性已经废弃移除,输入中的单引号、双引号、反斜杠和NULL字符都不会被转义。若需要转义可使用addslashes(),若需要反引用一个引用的字符串需要使用stripslashes()。

php也懂得表单变量上下文中的数组。

例子,使用更复杂的表单变量,并将表单post给自己并在提交时显示数据。

  1. if(isset($_POST['action'])) {
  2. var_dump($_POST);
  3. } else {
  4. $page = $_SERVER['PHP_SELF'];
  5. $s =
  6. STR;
  7. echo $s;
  8. }
复制代码

在heredoc中含有复杂变量时要格外小心,上面这段代码$_SERVER['PHP_SELF']不加花括号会在运行时报错。

  1. if(isset($_POST['action'])) {
  2. var_dump($_POST);
  3. } else {
  4. $s =
  5. STR;
  6. echo $s;
  7. }
复制代码

对于上面这段程序,当用户点击图片某处时,表单会传送到服务器,并加上两个变量sub_x和sub_y,包含了用户点击图片的坐标。

array (size=3) 'action' => string '1' (length=1) 'sub_x' => string '334' (length=3) 'sub_y' => string '282' (length=3) cookies

php可以用setcookie()函数设定cookies,cookies是http信息头的一部分,因此必须在向浏览器发送任何输出之前调用。

php cookie使用:

cookie数据在相应的cookie数组中可用,如果将多个值赋给一个cookie变量,必须将其赋成数组。