您的位置:首页 > 编程语言 > PHP开发

PHP自学笔记01----2014年05月08日

2014-05-08 16:39 267 查看
一、变量

1、$符号用来定义变量。

2、引用赋值,与JAVA类似。指向的地址的值赋给了另一个变量,它们所指向的是同一个地址,即一个值,其中一个变量,另一个也会随着改变。

3、 & 符号?????

4、PHP中并不需要初始化变量,但这不是个好习惯。示初始化变量默认值:boolean default false;int and float(double) default 0;String default 空字符串;Array defualt null Array

5、变量的作用范围:局部变量,一个function中的变量,只能访问function内部的变量,局部变量的命名可以重名,但它的作用范围仅于内部。

                                     

<?php
$a = 1;
include 'b.inc';
?>
此时$a将在b.inc中生效。

在PHP中全局变量必须用global申明。

全局变量即使是申明在function中,在function外部对定义在function中的全局变量赋值,那么在function内部也可以访问。

<?php
$a = 1;
$b = 2;

function Sum()
{
global $a, $b;

$b = $a + $b;
}

Sum();
echo $b;
?>
以上脚本的输出将是“3”

全局变量的另一种办法:$GLOBALS代替global.

<?php
$a = 1;
$b = 2;

function Sum()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}

Sum();
echo $b;
?>
$GLOBALS 是一个关联数组,每一个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。

静态变量(static variable)

静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失.


<?php
function Test() {
$a = 0;
echo $a;
$a++;
}
Test();
echo "<br />";
Test();
function Test1(){
static $a = 0;
echo $a;
$a++;
}
Test1();
echo "<br />";
Test1();
echo "<br />";
Test1();
?>
0

0

0

1

2

Test1重复调用后,它的值就会保持着,而不是重置为0了。

Note:用表达式的结果对[b]静态变量(static variable)赋值会导致解析错误。[/b]

static $int = 0;          // correct
static $int = 1+2;        // wrong  (as it is an expression)
static $int = sqrt(121);  // wrong  (as it is an expression too)
用global其实并不好!

下面是三个很好的理由:

1、代码重用几乎是不可能的。

如果一个函数依赖于全局变量,那么想在不同的环境中使用这个函数几乎是不可能的。另外一个问题就是你不能提取出这个函数,然后在其他的代码中使用。

2、调试并解决问题是非常困难的。

跟踪一个全局变量比跟踪一个非全局变量困难的多。一个全局变量可能会在一些不明显的包含文件中被重新定义,即使你有一个非常好的程序编辑器(或者IDE)来帮助你,你也得花了几个小时才能发现这个问题所在。

3、理解这些代码将是非常难的事情。

你很难弄清楚一个全局变量是从哪里来得,它是用来做什么的。在开发的过程中,你可能会知道知道每一个全局变量,但大概一年之后,你可能会忘记其中至少一般的全局变量,这个时候你会为自己使用那么多全局变量而懊悔不已。

更好的使用全局变量请参才:www.jb51.net/article/39027.htm

可变变量

一个变量的变量名可以动态的设置和使用

<?php
$a = 'hello';
$$a = 'world';  //此行中的$$a就等于$hello,
?>
常量

通常常量都是大写

常量的定义:define("大写常量名","常量值");

                     const AAA = 'aaaaaa';

常量的范围是全局的。

常量只能包含标量数据:boolean,integer,float和string.

系统常量:__FILE__;//两个下划线。

表达式:PHP中几乎所写的任何东西都是一个表达式。函数也是表达式,它也可以赋给一个变量。

比较运算符中特殊的几个:'==='表示两边值相等且数据类型也相等。

                                               ’!=='判断值外还要判断数据类型。

特殊类型的比较:null与字符串比,null会转换成' '

三元运算符:“?:”:表达式 (expr1) ? (expr2) : (expr3) 在
expr1 求值为 TRUE 时的值为 expr2,在expr1 求值为FALSE 时的值为
expr3。

错误控制符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。 

如果激活了 特性,表达式所产生的任何错误信息都被存放在变量$php_errormsg 中。此变量在每次出错时都会被覆盖,所以如果想用它的话就要尽早检查。



<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
die ("Failed opening file: error was '$php_errormsg'");

// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist.

?>

执行运算符

反引号:``;

<?php
$output = `ls -al`;
echo "<pre>$output</pre>";
?> 它可以执行系统命令?
数组运算符:判断相等、全等(相同的键 /值且顺序和类型相同),联合、不等

类型运算符:instanceof 用于确定一个 PHP 变量是否属于某一类

class 的实例:

$a instanceof MyClass


控制结构:

foreach:它只是一种遍历数组的简便方法。它仅能用于数组。

foreach (array_erpression as $value){

    statement;

}

foreach (array_expression as $key => $value){

    statement;

}   

switch

switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
}require()
include() 几乎完全一样,除了处理失败的方式不同之外。include()
产生一个Warning而 require() 则导致一个 Fatal Error。换句话说,如果想在丢失文件时停止处理页面,那就别犹豫了,用
require() 吧。include() 就不是这样,脚本会继续运行。同时也要确认设置了合适的include_path。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: