php基础(变量区分大小写)
特别注意:php与java,c#有区别,用户定义的全局变量在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 (整型)
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
?>
<?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。