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

一、变量

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:用表达式的结果对静态变量(static variable)赋值会导致解析错误。

    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。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值