php基础(变量区分大小写)

特别注意:phpjavac#有区别,用户定义的全局变量在php语言中并不算是全局的,如果需要使用必须使用global关键词或者$GLOBALS来引用。

<?php

 $w=1;

 $r=2;

 function demo(){

    echo '$w'+'$r';     //结果为0

 }

 demo();

     ?> 

要达到预期效果,可以使用:

<?php
$one = 200;
$two = 100;
function demo() {
global $one, $two;
echo $one + $two;
//下面的注释了,这样也是可以的
//echo $GLOBALS['one'] + $GLOBALS['two'];
}
demo ();
?>

综述:

在函数外声明的变量称为全局变量,全局变量在函数内不能被访问,这就是“能见度”。

如果要在函数内使用全局变量需要使用变通的方法:

1.第一种,使用$GLOBALS数组,这个数组保存了所有全局变量,如果使用全局变量$a,可以在函数内使用$GLOBALS['a']

2.在函数内用关键字global声明一个变量是全局变量,如果要使用全局变量$a,可以在函数内写一句global $a;注意,这句是要单独成行,使用这一句之后,如果函数内另外定义了变量$a,则忽略函数内定义的$a,如果在多个函数内使用全局变量$a,则每个函数都要写global $a;

静态变量

如果在函数中 unset()一个静态变量,则 unset()将销毁此变量及其所有的引用。

<?php
function foo() {
static $a;
$a++;
echo "$a\n";
unset($a);
}


foo();
foo();
foo();
?>

上边的例子将输出:

1

2

3

静态变量只存在于函数作用域内,也就是说,静态变量只存活在栈中。一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会。就是说,下次再调用这个函数的时候,该变量的值会保留下来。

静态变量是指用static声明的变量,这种变量与局部变量的区别是,当静态变量离开了它的作用范围后,它的值不会自动消亡,而是继续存在,当下次再用到它的时候,可以保留最近一次的值。

超全局变量

超全局变量是在全部作用域中始终可用的内置变量

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable;来访问它们。 

   这些超全局变量是:  

  • $GLOBALS

  • $_SERVER

  • $_GET

  • $_POST

  • $_FILES

  • $_COOKIE

  • $_SESSION

  • $_REQUEST

  • $_ENV

 常量

PHP中使用define()函数定义常量。

define(常量名,常量值),常量命名方法与变量命名相同,以字母或下划线开头,按照惯例常量名字全部大写,不同的单词用下划线隔开,以区分与变量不同。

魔术常量

__LINE__    __FILE__   __FUNCTION__      __CLASS__

isset():检查变量是否定义。

defined():检查常量是否定义

2.PHP处理表单

简单例子:

Html部分:

<form action="action.php" method="post">

 <p>姓名: <input type="text" name="name" /></p>

 <p>年龄: <input type="text" name="age" /></p>

 <p><input type="submit" /></p>

</form>

Php部分:

你好,<?php echo htmlspecialchars($_POST['name']); ?>。
你 <?php echo (int)$_POST['age']; ?> 岁了。

htmlspecialchars() 使得 HTML 之中的特殊字符被正确的编码,从而不会被使用者在页面注入 HTML 标签或者 Javascript代码。例如 age 字段,我们明确知道他是一个数值,因此我们将它转换 为一个 整形值(integer) 来自动的消除任何不必要的字符。

3.php的类型

PHP 支持8种基本的数据类型。

四种标量类型:

boolean (布尔型)

integer (整型)

float (浮点型, 也称作 double)

string (字符串)

两种复合类型:

array (数组)

object (对象)

class hdw{

 public $url = "fgfhjhgfjjjtyr";

 function haha(){   

echo "<br/>gfhhhhh";

  }   

}

$obj = new hdw();

echo $obj->url;

echo $obj->haha();

 

 

最后是两种特殊类型:

resource (资源)

NULL (NULL)

如果想查看某个表达式的值和类型,用 var_dump()(var_dump — 打印变量的相关信息)。

例:

<pre>
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_dump ($a);

/* 输出:
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}

*/

$b = 3.1;
$c = TRUE;
var_dump($b,$c);

/* 输出:
float(3.1)
bool(true)

*/
?>
</pre>

如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype()。要查看某个类型,不要用 gettype(),而用 is_type 函数。

4.强制转换类型

如果要将一个变量强制转换为某类型,可以对其使用强制转换或者 settype() 函数。

强制转换

<?php
$foo = 10;   // $foo is an integer
$bar = (boolean) $foo;   // $bar is a boolean
?>

settype()

<?php
$foo = "5bar"; // string
$bar = true;   // boolean

settype($foo, "integer"); // $foo 现在是 5   (integer)
settype($bar, "string");  // $bar 现在是 "1" (string)
?>

 

5.变量引用

在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,替代的是,引用是符号表别名。

PHP 的引用允许用两个变量来指向同一个内容。意思是,当这样做时:

<?php $a =& $b;?> 这意味着 $a 和 $b 指向了同一个变量。

 

6.php变量名区分大小写。函数名,类名不区分 

 

7.require()include()的区别

require()include()几乎完全一样,除了处理失败的方式不同之外。

include() 产生一个Warning;而 require()则导致一个Fatal Error。换句话说,如果想在丢失文件时停止处理页面,那就别犹豫了,用   require() 吧。include()就不是这样,脚本会继续运行。同时也要确认设置了合适的include_path。  

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2012-09-10 11:01  hlp鹏  阅读(758)  评论(0编辑  收藏  举报