安庆网站建设
 网申首页   联系我们   加入收藏

联系安庆网络公司

网申公司
服务项目
联系我们
网站: 0556-8778040
短信: 0556-5371498
商务: 18714896998
邮箱: wm218@qq.com
地址: 安庆市石化亿和商务写字楼B座309室
当前位置: 首页 > 行业资讯
PHP基础学习篇
Loading...

PHP基本语法

一。PHP标记

     PHP是以<?php 开始 以?> 结束的标记,当然PHP也允许使用短标记<? 与 ?>,但不鼓励使用。对于纯PHP代码的的文件,建议在文件尾处删除PHP结束标记[来自官方手册],这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。

 

课外①:除了使用标准的<?php 与 ?>这个标记外,我们还可以用于类似前端脚本的代码,如下:

<script language="php">
echo "123";
</script>

也是可以运行PHP代码。

 

课外②:自 PHP 5.4 起,短格式的 echo 标记 <?= 总会被识别并且合法,而不管 short_open_tag 的设置是什么。即下列代码是合法运行的:

<?=1234567?>

二。PHP指令分隔符

PHP语句是以分号为结束指令。一段PHP代码中的结束标记隐含了一个分号,所以PHP最后一语句可以不用分号结束,但非最后一句必须以分号结束。

三。PHP注释

和所有语言一样PHP注释也分单行注释与多行注释,PHP单行注释用 “//”与 “#”,多行注释用“/*注释文本*/“,见示例:

<?php
echo "PHP注释<br/>";//这是单行注释
/*
这是多行注释
但这里千万不要出现注释套嵌
*/
echo "#号也是可以注释的";#这也是单行注释
?>

PHP数据类型

这章节是学习PHP基础知识中的重点,了解PHP基础才能更好的运用PHP。PHP数据类型分为8种:

四种标量类型: Integer Boolean Float String

两种复合类型: Array Object

两种特殊类型: Null   Resource

PHP会根据变量上下文运行时,自动变别变量的数据类型。

获取变量类型函数: gettype(变量)

 输出示例:

<?php
//PHP类型
$intVal = 250;
$strVal = "这是一个字符串";
$bolVal = true;
$floatVal = 3.1415;
echo "intVal类型是:".gettype($intVal)."<br/>strVal类型是:" .gettype($strVal)."<br/>bolVal类型是:".gettype(bolVal)."<br/>floatVal类型是:".gettype($floatVal)."<br/>";
?>

输出结果:

intVal类型是:integer
strVal类型是:string
bolVal类型是:string
floatVal类型是:double

 

判断变量是否是某一类型函数:  is_type(变量)

输出示例:

<?php
//PHP类型
$intVal = 250;
$strVal = "这是一个字符串";
$bolVal = true;
$floatVal = 3.1415;
if(is_int($intVal))
{
	echo "intVal是整形<br/>";
}
if(is_float($floatVal))
{
	echo "floatVal是浮点型<br/>";
}
if(is_string($strVal))
{
	echo "strVal是字符串型<br/>";
}
if(is_bool($bolVal))
{
	echo "bolVal是布尔型";
}
?>

输出结果:

intVal是整形
floatVal是浮点型
strVal是字符串型
bolVal是布尔型

改变变量数据类型,可使用强制类型转换,或者使用函数settype(变量,新类型字符串值)

强制类型转换略过,后面在详解,这里主要讲解一下settype函数的用法,输出示例:

<?php
//PHP类型
$str1 = "12月12日我们去公园";
$str2 = "小丽和小明是姐弟俩";
settype($str1,"integer");//将$str1 变量转换成整形
settype($str2,"integer");
echo $str1 ."<br/>".$str2;//这里输出为12 与 0
?>

Boolean布尔类型

Boolean 类型变量,只有二个值True与False

当转换为Boolean时,以下值被认为是False

整型值0 、浮点型值0.0、空字符串及字符串为"0"、不包括任何元素的数组、不包括任何成员变量的对象、特殊类型NULL、从没有任何标记(tags)的 XML 文档生成的 SimpleXML 对象

-1和其它非0值,不论正负一样被认为是True.

Integer整型

整型值可以是二进制,十进制,八进制,十六进制的正数或负数。要使用八进制数字前必须加0,要使用十六进制数字前必须加0X,要使用二进制数字前必须加0b

如果向八进制数传递了一个非法数字(即 8 或 9),则后面其余数字会被忽略。

决不要将未知的分数强制转换为 integer,这样有时会导致不可预料的结果。见下例:

 

<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7!
?>

PHP是没有整除的,所以想要除法的结果为整型,必须使用强制类型转换。

Float浮点型

永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。

floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118...。

NaN

NaN表示未定义的或不可表达的值,任何值与NaN比较的结果都是FALSE

String字符串

string值最大可达2GB,有四种方式表达字符串:

一。单引号

二。双引号

三。heredoc语法结构

四。nowdoc语法结构

单引号: 可以将一个字符串包含在单引号内,例如: echo '你好,世界!';  如果想在单引号内出现单引号,需要在它前面加反斜线来转义,示例: echo '你好\'世界!';

如果要表示一个反斜线本身,则用两个反斜线,例如: echo '你好\\世界!';   事实上,单个反斜线也是可以的,示例: echo '你好\世界!';

单引号字符串中的变量不会被变量值替换,如下示例:

 

<?php
$v = "中国人";
echo '我是$v
可以多行录入文本,这点比ASP强多了';
?>

输出结果: 我是$v

双引号:用双引号定义的字符串最重要的特征是变量会被解析。

HEREDOC语法结构: 类似于双引号

结构示例:

<?php
//Heredoc语法结构说明
$varString = <<<MyTag
今天又是雾霾天气
冬天不下雪了。。。
MyTag;
echo $varString;
?>

Heredoc语法结构注意事项:

一。以 <<< 开始,后面跟自定义标识符。然后以自定义标识符结束,且必须以分号结尾。

二。自定义标识符必须符合PHP命名规则。

三。结束自定义标识符必须位于该行第一列,前面不能含有任何字符,以分号结束,且分号后面也不能含有任何字符。

四。该语法内的变量会被解析。

五。使用双引号声明标识符,比如 $varString = <<<"MyTag"
NowDoc语法结构:类似于单引号,nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。

结构示例:

一个 nowdoc 结构也用和 heredocs 结构一样的标记 <<<, 但是跟在后面的标识符要用单引号括起来,即 <<<'MyTag'。Heredoc 结构的所有规则也同样适用于 nowdoc 结构,尤其是结束标识符的规则。

 只有通过花括号语法才能正确解析带引号的键名,示例 :

echo "This works: {$arr['key']}";

string可以看做从0下标开始的数组。

1.用超出字符串长度的下标写入将会拉长该字符串并以空格填充。

2.非整数类型下标会被转换成整数。

3.非法下标类型会产生一个 E_NOTICE 级别错误。

4.用负数下标写入字符串时会产生一个E_NOTICE 级别错误,用负数下标读取字符串时返回空字符串。

5.写入时只用到了赋值字符串的第一个字符。比如: $str[10] = "abc"; 只赋了a

6.用空字符串赋值则赋给的值是 NULL 字符。

Array数组类型

数组定义语法:    array(key=>value,...)

key会有如下强制转换

1.包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。

2.浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。

3.布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。

4.Null 会被转换为空字符串,即键名 null 实际会被储存为 ""。

5.数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。

如果在数组定义中多个单元都使用了同一个键名,则只使用了最后一个,之前的都被覆盖了。

见下例:

<?php
$array = array(
    1    => "a",
    "1"  => "b",
    1.5  => "c",
    true => "d",
);
var_dump($array);
?>
以上例程会输出:

array(1) {
  [1]=>
  string(1) "d"
}

之前的1 => "a"  "1"=>"b"  1.5=>"c" 都被最后一个所取代。

如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。

指定键名的数组,后一个key自动加1

<?php
$array = array(
         "a", //这里默认值0
         "b",//这里默认值1
    6 => "c",
         "d",//这里默认值为 7
);
var_dump($array);
?>

数组键值规则:对于没有定义键值的数组元素,默认是当前键值最大值加1:

例如:$array_i = array("a15"=>1,"a12"=>2,"a"=>3,4,123);   在这里面,第一,二,三键值都是字符型,所以第四键值为0,第五键值为1

         $array_i = array("15"=>1,"12"=>2,"a"=>3,4,123); 在这里面,第一个键值最大15,所以第四个键值为16,第五个键值为17。

键值与顺序无关。

 数组嵌套用法:

<?php
$array = array(
    "foo" => "bar",
    42    => 24,
    "multi" => array(
         "dimensional" => array(
             "array" => "foo"
         )
    )
);

var_dump($array["foo"]);
var_dump($array[42]);
var_dump($array["multi"]["dimensional"]["array"]);
?>
以上例程会输出:

string(3) "bar"
int(24)
string(3) "foo"
数组间接引用
<?php
function getArray() {
    return array(1, 2, 3);
}

// on PHP 5.4
$secondElement = getArray()[1];

// previously
$tmp = getArray();
$secondElement = $tmp[1];

// or
list(, $secondElement) = getArray();
?>

访问数组元素,可以用方括号,也可以用花括号,如 getArray[1] 等同于 getArray{1}

要删除某一键值,用 unset(),示例: unset(getArray[1]);

<?php
$myArray = array("姓名"=>"王明","性别"=>"男","职业"=>"软件工程师");
echo "输出个人信息:<br/>姓名:".$myArray["姓名"]."<br/>性别:".$myArray["性别"]."<br/>职业:".$myArray["职业"]."<br/>";
unset($myArray["性别"]);
echo "输出个人信息:<br/>姓名:".$myArray["姓名"]."<br/>性别:".$myArray["性别"]."<br/>职业:".$myArray["职业"]."<br/>";
?>
<?php
// 创建一个简单的数组
$array = array(1, 2, 3, 4, 5);
print_r($array);

// 现在删除其中的所有元素,但保持数组本身不变:
foreach ($array as $i => $value) {
    unset($array[$i]);
}
print_r($array);

// 添加一个单元(注意新的键名是 5,而不是你可能以为的 0)
$array[] = 6;
print_r($array);

// 重新索引:
$array = array_values($array);
$array[] = 7;
print_r($array);
?>
以上例程会输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
Array
(
)
Array
(
    [5] => 6
)
Array
(
    [0] => 6
    [1] => 7
)
unset() 函数允许删除数组中的某个键。但要注意数组将不会重建索引。如果需要删除后重建索引,可以用 array_values() 函数。

 

Object对象【省,日后详解】

创建一个对象用new,简单创建对象示例:

<?php
class myclass
{
	function outString()
	{
		echo "输出字符";
	}
}
$myObj = new myclass;
$myObj->outString();
?>

Resource 资源类型【略】

 

PHP变量

php变量是用$符号开头,变量名称区分大小写,有效的变量名已字母或下划线开头。PHP变量可以不定义直接使用。

$this是个特殊变量的,不能被赋值。

可以用汉字定义变量,但第一个字符必须是字母或下划线。

<?php
$cn姓名 = "王明";
echo '汉字定义变量:' . $cn姓名;
?>

变量的引用,和C语言类似,语法 $val = &$val1  引用类似于指向,它不实际分配内存空间,仅是指向被引用变量的内存地址。

<?php
echo '变量的引用:';
$val1 = 123;
$val2 = &$val1;
echo "输出被引用变量值:$val1<br/>输出引用变量值:$val2<br/>";
$val2 = 456;
echo "更改后的引用值:$val2<br/>更改后的被引用值:$val1";
?>

只有有名字的变量才可以引用赋值,如下是非法引用:

<?php
$foo = 25;
$bar = &$foo;      // 合法的赋值
$bar = &(24 * 7);  // 非法; 引用没有名字的表达式

function test()
{
   return 25;
}

$bar = &test();    // 非法
?>

变量的作用范围:

函数内部的变量被作用在函数内,示例:

<?php
echo "<h1>以下示例解释了函数内的变量,仅作用于函数内:</h1>";
$a = 123;
function myfun()
{
	echo "这里试图输出函数外变量值:$a 但可以看出输出的是空值。";
}
myfun();
echo "这里输出:$a ";
?>

要在函数内使用全局变量,可使用global关键字

示例:

<?php
echo "<h1>以下示例解释了函数内的变量,仅作用于函数内:</h1>";
$a = 123;
function myfun()
{
	global $a,$b;//这里指出$a 与 $b 都是全局变量,虽然$b没有定义,相当于$b在此函数内定义了
	echo "这里输出的是全局变量: $a <br/>";
	$b = 456;
}
myfun();
echo "这里输出:$a <br/>这里输出:$b";
?>

除了使用global访问全局变量,我们还可以使用$GLOBALS数组,$GLOBALS是个超全局变量

<?php
//定义一个nowdoc语法结构
$vStr = <<<'Tip'
<h1>函数中调用全局变量的二种方式:global 与 $GLOBALS数组</h1>
Tip;
echo "$vStr";
//定义四个变量;
$a = 1;$b = 2; $c=3; $d= 4;
function myfun()
{
	//global指定全局变量
	global $a,$b;
	echo "a+b=".($a+$b)."<br/>";
	echo "c+d=".($GLOBALS["c"] + $GLOBALS["d"]); //注意GLOBALS必须为大写
}
myfun();
?>

PHP的静态变量和其它语言的静态变量类似,只初始化一次,且也是由status来初始化。

★如果静态变量在函数内,则此静态变量的作用域为块作用域,且调用此函数时,也只初始化一次

示例:

<?php
echo "PHP静态变量在函数内作用域:<br/>";
function static_f()
{
	static $STATIC_I = 1;
	echo $STATIC_I++ ."<BR/>";
}
function static_f1()
{
	static $STATIC_I = 1;
	echo $STATIC_I++ ."<BR/>";
}
static_f();//输出1
static_f();//输出2 此静态变量在此函数内是通用的
static_f1();
static_f1();
<?php
//PHP静态变量示例
function myfun()
{
	static $myv = 1;
	echo "$myv<br/>";
	$myv ++;
}
echo "第一次输出:";
myfun();
echo "第二次输出:";
myfun();
echo '可以看出变量$myv只初始化了一次,第二次执行myfun时,会不在执行myv的赋值操作。';
?>

 可变变量[这是我在其它语言中,未见过的,挺好玩的]

可变变量指一个变量的变量名可以动态的设置和使用,如下示例:

<?php
echo "可变变量的演示:<br/>";
$myv = "hello";
$$myv = " word!";//这里定义了一个可变变量$$myv
echo '$$myv 等同于 $hello<Br/>'.$$myv.'='.$hello."<br/>";

echo '<h3>有个挺有意思的问题,就是可变变量的命名规则可以更改,如下例:</h3>';
$myv = "1hello";//这里第一个字符是1
$$myv = "2222"; //是不是相当于 $1hello ,呵呵
?>

 常量

常量区分大小写,传统上常量都是用大写。常量的作用域是全局的。

常量语法:define(string constant_name,mixed value,case_sensitive=true)

constant_name 必选参数,常量名称

value 必选参数,常量值

case_sensitive 可选参数,默认值False表示区分大小写,值true,表示不区分大小写

<?php
define("PUBLIC_MYVAL","123");//定义常量
echo PUBLIC_MYVAL;
?>

可以用 define() 函数来定义常量,在 PHP 5.3.0 以后,可以使用 const 关键字在类定义之外定义常量。一个常量一旦被定义,就不能再改变或者取消定义。

常量只能包含标量数据(boolean,integer,float 和 string)。可以定义 resource 常量,但应尽量避免,因为会造成不可预料的结果。

和使用 define() 来定义常量相反的是,使用 const 关键字定义常量必须处于最顶端的作用区域,因为用此方法是在编译时定义的。这就意味着不能在函数内,循环内以及 if 语句之内用 const 来定义常量

 

<?php
const abc = 123;//const定义常量示例,这里不能使用 const $abc = 123;
?>

PHP获取常量值,有二种方法:

1.直接使用常量名获取值。

2.使用constant()函数获取,使用constant()可以动态的输出不同的常量,在使用上灵活方便,语法格式: mixed constant(string const_name),如果获取成功返常量值,获取失败提示常量没有定义。

 

 判断常量是否被定义:使用 defined()函数,语法: bool defined(string constant_name),返回true表示常量定义了,返回false表示未定义。

 表达式

标量值:不能拆分为更小的单元,例如和数组不同
PHP 支持四种标量值:整型值(integer),浮点数值(float),字符串值(string)和布尔值(boolean)

一个普通表达式的含义
$a = 5 的含义:
1.整型常量 5
2.变量$a的值是5
3.整个表达式的值 5
即:$b = ($a=5),含义是 ($a=5) 这个表达式的值是5,即 $b的值赋于了5

前递增(减)与后递增(减)
前递增:递增后值在参与计算。后递增:先参与计算,在递增。

<?php
echo "<h1>以下示例说明前递增与后递增的区别:</h1>";
$i1 = 1;
$a = 5 + (++$i1);//前递增,这里$a = 5 + 2; $i 增1后参与计算
$i2 = 1;
$b = 5 + ($i2--);//后递增,这里$b = 5 + 1; 之后$i 减1
echo "前递增是先增加1之后的结果参与运算:$a&nbsp;&nbsp;&nbsp;i1结果值:$i1<br/>"."后递增是先参与运算:$b&nbsp;&nbsp;&nbsp;i2结果值:.$i2<br/>";
?>

 

递增递减注意事项

1.字符及字符串可以递增,但不能递减,递减返回原字符串。

2.只有字符及数字可以递增递减,其它字符无效。

<?php
echo "<h1>递增递减示例:</h1>";
$i = 1;
echo '前递增值:' . ++$i ."<br/>";//结果 2 前递增,先将$i的值增一,在参与计算
$i = 1;
echo '后递增值:' . $i++ ."<br/>";//结果 1 后递增,先将$i参与计算,然后$i值在增1
echo '<h1>字符递增递减示例:</h1>';
echo '<h4>字符变量只能递增不能递减.</h4>';
$s = 'b';
echo 'b的递减:' . --$s ."<br/>";
echo '<h5>纯字母数字可以递增递减,其它字符递增递减无效,返回无字符。<h5>';
$s = '_';
echo '_字符的递增:' . ++$s.'<br/>';
$s = 'a';
echo 'a字符的递增: ' .++$s.'<br/>';
echo '<h5>字符串的递增,只递增最后一个字符。</h5>';
$s = 'abc2';
echo 'abc2的递增:' .++$s ."<br/>";
?>

 

字符递增不等于 字符变量 + 1,即 ++$s 的结果,不等于  $s + 1的结果

以下是特殊的字符递增结果:

<?php
$i = 'W';
for ($n=0; $n<6; $n++) {
    echo ++$i . "\n";
}
?>

 结果输出为:

X
Y
Z
AA
AB
AC

组合运算赋值表达式:
$a+=4;//表示:$a + 4 的值赋值$a ,等同于 $a = $a + 4;
$a-=4;$a*=4;$a/=4; $b="Hello ";$b .="There!"等。

三元表达式:表达式?表达式为true时的结果:表达式为false时的结果;
示例:($a==17) ? 1 : 0;
上例表示: 如果 $a等于17 整个表达式的值就为1  否则整个表达式的值就为0

表达式 (expr1) ? (expr2) : (expr3)

自PHP5.3起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

 

算术运算符:+(加) -(减) *(乘) /(除) %(取模)
除法运算符总是返回浮点数,只有在二个操作数是整数(或字符串转换成的整数),并且正好被整除时,它返回一个整数。
取模运算符在运算前都会被转换成整数(除去小数部份。)
取模运算符的结果正负号,与被除数的符号相同。

<?php

echo (5 % 3)."\n";           // prints 2
echo (5 % -3)."\n";          // prints 2
echo (-5 % 3)."\n";          // prints -2
echo (-5 % -3)."\n";         // prints -2

?>

比较运算符: ==(等于)   ===(全等)   !=(不等)   !==(不全等)   <>(不等)  >(大于)  <(小于)  >=(大于等于)  <=(小于等于)

■数字和字符串比较时,会被字符串转换为数值进行比较。

<?php
$i = 0;//整型
$s = "a";//字符型
echo '<h3>用==判断$i与$s是否相等</h3>';
if($i==$s)//强制将 $s 转换成整型数对比 输出: echo (int)$s
{
	echo '相等';
}else{
	echo '不相等';
}
?>

■含纯数字的字符串之间的比较,也是将字符串转换成数值进行比较。 

<?php
$s1 = "1";
$s2 = "0001";
if($s1==$s2)
{echo '相等';}else{echo '不相等';}
?>

题外:关于一道题的解释

"10" == "1e1"
100 == "1e2"
以上二行表达式均返回TRUE,是因为php在强制类型转换时,将 1e1 转换成了 1e1 的科学计数法, e1表示10的1次方,即10,而 e2表示10的2次方即100,所以相等

 

错误控制运算符:@。

1.当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
2.@运算符只对表达式有效。如果能从某外得到值,就能在它前面加上@运算符,如可以放在变量,函数调用,include调用,常量等之前,但不能放在函数定义,类定义,if及 foreach等。

3.@也不能放在echo 前面

 

<?php
echo "定义一个不区分大小写的常量:";
define("aBc",123,false);
@constant("abc");
?>

上例代码中,如果 直接使用 constant("abc");将会产生一个错误,但如果在此表达式之前使用了错误控制运算符,将会忽略此错误!。 

逻辑运算符

and 逻辑与 两者都为true
or 逻辑或 只要有一个为true
Xor 逻辑异或 两都一个为true,一个为false
! 逻辑非 true时,值为false,返之
&& 逻辑与 两者都为true
|| 逻辑或 只要有一个为true
注意: || 优先级比  or高,同样 && 比 and高。建议在使用逻辑运算符时,使用括号来定义优先级,示例:
$f = false or true;  $f的结果是 false ,因为 or优先级低于 = ,相当于:(($f = false) or true) 

 

数组运算符

例子 名称 结果
$a + $b 联合 $a  $b 的联合。
$a == $b 相等 如果 $a  $b 具有相同的键/值对则为 TRUE
$a === $b 全等 如果 $a  $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE
$a != $b 不等 如果 $a 不等于 $b 则为 TRUE
$a <> $b 不等 如果 $a 不等于 $b 则为 TRUE
$a !== $b 不全等 如果 $a 不全等于 $b 则为 TRUE
+ 运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。
<?php
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");

$c = $a + $b; // Union of $a and $b
echo "Union of \$a and \$b: \n";
var_dump($c);

$c = $b + $a; // Union of $b and $a
echo "Union of \$b and \$a: \n";
var_dump($c);
?>
执行后,此脚本会显示:
Union of $a and $b:
array(3) {
  ["a"]=>
  string(5) "apple"
  ["b"]=>
  string(6) "banana"
  ["c"]=>
  string(6) "cherry"
}
Union of $b and $a:
array(3) {
  ["a"]=>
  string(4) "pear"
  ["b"]=>
  string(10) "strawberry"
  ["c"]=>
  string(6) "cherry"
}
<?php
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");

var_dump($a == $b); // bool(true)  这里判断值与健值是否相等,与顺序无关
var_dump($a === $b); // bool(false) 这里是完全相等,键、值、顺序都要相等
?>

 instanceof类型运算符

instanceof用于确定一个变量是否属于某一类 class 的实例,语法: 变量 instanceof 类名。返回值:true 或 false

★上述语法中,类名可以直接是类的名称,比如 $a instanceof Myclass . Myclass 是类名,示例:

<?php
echo '<h3>instance示例:</h3>';
class MyClass
{
}
$a = new MyClass;
if($a instanceof MyClass)//标准格式调用
{
	echo '变量$a是类MyClass的实例<br/>';
}else{
	echo '变量$a不是类MyClass的实例<br/>';
} 

★上述语法中,类名也可以是变量名称,比如: $b = 'Myclass'; $a instanceof $b 。

<?php
echo '<h3>instance示例:</h3>';
class MyClass
{
}
$a = new MyClass;
$b = 'MyClass';
if($a instanceof $b) //用字符变量调用类名
{
	echo '变量$a是类MyClass的实例<br/>';
}else{
	echo '变量$a不是类MyClass的实例<br/>';
}

★上述语法中,类名也可以是类的实例,当为类的实例时,表示判断两个变量是否属于同一类。

<?php
echo '<h3>instance示例:</h3>';
class MyClass
{
}
$a = new MyClass;
$b = new MyClass;
if($a instanceof $b) //变量b 也是类的实例
{
	echo '变量$a是类MyClass的实例<br/>';
}else{
	echo '变量$a不是类MyClass的实例<br/>';
} 

★上述语法中,类名也适用于类的扩展类

<?php
echo '<h3>instance示例:</h3>';
class MyClass
{
}
class Myc  extends MyClass
{
}
$a = new Myc;
if($a instanceof MyClass)
{
 echo '变量$a是类MyClass的实例<br/>';
}else{
 echo '变量$a不是类MyClass的实例<br/>';
}

 ★上述语法中,参数一:变量,不可以是常量,且如果变量不是类的实例,instanceof不会发出任何错误,直接返回false,示例:

<?php
$a = 1;
$b = NULL;
$c = imagecreate(5, 5);
var_dump($a instanceof stdClass); // $a is an integer
var_dump($b instanceof stdClass); // $b is NULL
var_dump($c instanceof stdClass); // $c is a resource
var_dump(FALSE instanceof stdClass);
?>
以上例程会输出:

bool(false)
bool(false)
bool(false)
PHP Fatal error:  instanceof expects an object instance, constant given

流程控制

if语句

语法:

if(条件)
{
}else if(条件){  //这里也可以使用 elseif
}else{
}

或者使用:
if(条件):
elseif(): //注意,使用昌号时,不能使用 else if 
else:
endif; //这里必须用 ; 结束

或者语法:以下代码又称流程替代语法

if(条件):
elseif:(条件)
else:
endif;

while 语法:

语法格式:

while (条件)//只要条件为真,则执行
{
}
//或昌号:语法二:
while(条件):
执行过程;
endwhile;


示例:

<?php
$a =5;
while ($a>0)
{
	echo --$a.'<br/>';
}do  while(条件) 语法

do while 语法,不论条件是否为true,至少会执行一次。

语法:

do{
}while(条件);

 

可以使用break 或者 goto来跳出循环。

 

for语法,格式:

for (expr1; expr2; expr3)
for几种用法示例:
<?php
/* example 1 */

for ($i = 1; $i <= 10; $i++) {//常规用法
    echo $i;
}

/* example 2 */

for ($i = 1; ; $i++) {//空跳出条件,内部跳转
    if ($i > 10) {
        break;
    }
    echo $i;
}

/* example 3 */

$i = 1;
for (;;) {//完全空,内部跳转
    if ($i > 10) {
        break;
    }
    echo $i;
    $i++;
}

/* example 4 */

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); //利用参数执行,而用程序块执行
?>
 

for的昌号用法:

for (expr1; expr2; expr3):
    statement;
    ...
endfor;

foreach编历用法:

上一篇: 揭开“网络钓鱼”的真正面目下一篇: 没有了
安庆百度推广,安庆百度优化,安庆百度竞价 安庆网站摧广,安庆企业建站,安庆域名注册 安庆雅虎推广,安庆网站优化 安庆服务器托管,安庆虚拟主机,安庆网站空间 安庆网站建设 安庆短信群发,安庆短信群发公司
安庆百度推广 安庆谷歌摧广 安庆雅虎推广    安庆门户网站 安庆短信群发  安庆软件开发
 
网申介绍 | 网申新闻 | 联系网申 | 安庆网站制作 | 安庆网站推广 | 安庆短信群发 | 安庆装饰工程 | 安庆广告设计 | 安庆软件开发

版权所有: © 2002-2013 安庆网申文化传媒有限公司™   公司地址:安徽省安庆市石化亿和商务写字楼B座309室 (石化医院正面向北200米)

商务合作:18714896998 在线咨询: 点击这里给我发消息 公司邮箱:wm218@qq.com 皖ICP备11013986号 www.aqsos.com网站PR查询