2015-03-18 wcdj
摘要:PHP可以做什么,以及基本语法。
0 PHP是干啥的
为什么要学习PHP?“我可以用JavaScript来实现程序编写。”但JavaScript的能力是有限的,JavaScript通常运行在浏览器(客户端),它可以制作网页上面的特效:鼠标滑过背景改变颜色,还有网页上常见的鼠标滑过弹出菜单。但如果要让JavaScript实现显示“访问网站的总人数”,它就无能为力了,因为它只能获得客户端的信息,而“访问网站的总人数”是存储在服务器端的。所以就需要另外一种可以在服务器端运行的编程语言,PHP语言就是其中的一种,因为它可以运行在Web服务器端。
在学习PHP之前让我们来认识一下PHP及其功能。
1、运行在服务器端:学会了PHP,就可以指挥服务器给你干活,甚至是搞破坏^_^(千万不能真这么做咯),WEB网站的大部分数据都是存储在服务器端的,PHP就是用来处理这些存储在服务器的数据的(功能强大吧)。
2、跨平台:服务器可以是多种平台的服务器,比如Linux、Windows、Unix,你都可以指挥(不用怕只能指挥一种服务器啦吧)。
3、脚本语言:它是通过编写脚本,也就是一行行的计算机指令(也可以理解为特定的英文单词),来指挥服务器来工作的,因此,在编写PHP的过程其实就是与老外(服务器成老外啦)交流的过程,交流的语言就是PHP。
4、免费:免费使用(天下还真有免费的午餐)。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>欢迎学习php!</title>
</head>
<body>
<p>
<?php
// this is a comment
echo 'php learning, gerry';
echo 1024*4;
?></p>
</body>
</html>
不同于HTML和CSS,在php中我们可以做计算,比如我们写入echo 12*3
计算机会计算出结果36
。如下代码:
<?php echo 12*3;?>
一个字符串是用双引号括起来的一个词或一个句字,比如:“Hi,imooc!”。你可以用PHP语言输出把这个字符串输出,像这样:
<?php echo "Hi,imooc";?>
也可以用单引号括起来,就像下面代码:
<?php echo 'Hi,imooc';?>
可以把两个字符用连接符
连接起来,像这样:
<?php echo 'Hi,'.'imooc';?>
注意: 连接符可以连接多个字符串,上面的例子就是把一个字符串拆分为二个小字符串,然后用一个连接符连起来。
在php中字符串连接符是用点(.)来表示的,这一点比较特殊,其它语言中是用加号(+)来表示的,比如:JavaScirpt、C。
在PHP中也有注释语句:用双斜杠(//)来表示。其它语言中,Html中使用<!--注释语句-->,CSS中使用/*注释语句*/。如下面代码:
<?php //输出hi,imooc echo "hi,imooc"; ?>
注释语句可以在PHP程序的任意位置(但注释语句一定要写在<?php ?>之间)。
注意:这个注释语句是为程序员准备的。
1 变量的用法
<?php
$var = "hello";
echo $var;
echo "<br />";
$var = "world";
echo $var;
?>
在PHP中变量名是区分大小写的,var_dump函数可以将变量的数据类型显示出来。
<?php
$var_name = "apple";
$n = 10;
var_dump($var_name);
var_dump($n);
?>
在变量中,由于变量占用的空间单元不一样(占的地盘大小不一样),也分成几种数据类型,就像超市商品的包装袋,有几种不同类型,不同的商品使用不同的包装袋。我们可以通过使用“memory_get_usage”获取当前PHP消耗的内存。
<?php
echo $m1 = memory_get_usage();
echo "<br />";
$var_string = "123";
echo $m2 = memory_get_usage()-$m1;
echo "<br />";
$n = 123;
echo $m3 = memory_get_usage()-$m1-$m2;
echo "<br />";
$f = 123.00;
echo $m4 = memory_get_usage()-$m1-$m2-$m3;
echo "<br />";
$var_array = array("123");
echo $m5 = memory_get_usage()-$m1-$m2-$m3-$m4;
?>
分别定义四种不同的数据类型,分别是字符串类型,整型,浮点型和数组。初始化消耗了624056,字符串消耗328,整型和浮点型都是288,数组消耗632。
注意:根据操作系统、PHP版本以及PHP的运行方式可能输出结果会不同。
在PHP中,支持8种原始类型,其中包括四种标量类型、两种复合类型和两种特殊类型。PHP是一门松散类型的语言,不必向PHP声明变量的数据类型,PHP会自动把变量转换为自动的数据类型,一定程度降低了学习PHP的门槛。如果接触过C语言或者JAVA语言,就会发现在声明变量的时候需要声明变量的数据类型。
<?php
$string = "就是就是";
var_dump($string);
echo "<br />"; // string(12) "就是就是"
$string = 9494;
var_dump($string);// int(9494)
echo "<br />";
?>
布尔类型(boolean):只有两个值,一个是TRUE,另一个FALSE,可以理解为是或否。它不区分大小写,也就是说”TRUE”和“true”效果是一样的。主要用在条件结构(条件结构在后面部分会介绍)中,例如判断是否满足条件的时候,是用“true”表示满足,用“false”表示不满足。需要注意的是,当我们用”echo”指令输出布尔类型时,如果是“true”则输出的是“1”,“false”则什么也不输出。我们可以使用“var_dump”函数,获取它真正的数据类型。
<?php
$man = "男";
$flag = $man == "男";
echo $flag ;// 1
echo "<br />" ;
var_dump($flag);// bool(true)
?>
整型(integer):类似于常见的整数。它可以用十进制、八进制、十六进制指定。十进制就是日常使用的数字;八进制,数字前必须加上“0”(这个0是阿拉伯数字0,可不是英文字母“欧”哦);十六进制,数字前必须加“0x” (这个0也是阿拉伯数字0,不是“欧”哦)。
<?php
$data_int1 = 123;// 十进制
echo $data_int1;
echo "<br />";
$data_int2 = -123;// 负数
echo $data_int2;
echo "<br />";
$data_int3 = 011;// 八进制
echo $data_int3;
echo "<br />";
$data_int4 = 0x11;// 十六进制
echo $data_int4;
echo "<br />";
?>
浮点型(浮点数、双精度数或实数),也就是通常说的小数,可以用小数点或者科学计数法表示。科学计数法可以使用小写的e,也可以使用大写的E。
<?php
$num_float1 = 1.234;// 小数点
echo $num_float1;
echo "<br />";
$num_float2 = 1.2e3;// 科学计数法,小写e
echo $num_float2;
echo "<br />";
$num_float3 = 7.0E-2;// 科学计数法,大写E
echo $num_float3;
echo "<br />";
?>
字符串是由一系列字符组成,在PHP中,字符和字节一样,也就是说,一共有256种不同字符的可能性。
字符串型可以用三种方法定义:单引号形式、双引号形式和Heredoc结构形式。
<?php
$str_string1 = '我是字符串';// 单引号
$str_string2 = "我也是字符串哦";// 双引号
echo $str_string1;
echo "<br />";
echo $str_string2;
?>
当你的字符串中包含引号的时候,我们怎么办?
<?php
$str_string1 = '甲问:“你在哪里学的PHP?”';
$str_string2 = "乙毫不犹豫地回答:'就不告诉你!'";
$str_string3 = '甲:\'无语\'';
$str_string4 = "乙:\"呵呵\"";
echo $str_string1;
echo "<br />";
echo $str_string2;
echo "<br />";
echo $str_string3;
echo "<br />";
echo $str_string4;
echo "<br />";
?>
当双引号中包含变量时,变量会与双引号中的内容连接在一起;
当单引号中包含变量时,变量会被当做字符串输出。
<?php
$love = "I love you!";
$string1 = "hi $love";// hi I love you!
$string2 = 'hi $love';// hi $love
echo $string1;
echo "<br />";
echo $string2;
?>
当我的字符串很长怎么办?
我们可以使用 Heredoc结构形式的方法来解决该问题,首先使用定界符表示字符串(<<<),接着在“<<<“之后提供一个标识符 GOD,然后是字符串,最后以提供的这个标识符结束字符串。<?php
$string1 = <<< gerry
我有一只小毛驴,我从来也不骑。
有一天我心血来潮,骑着去赶集。
我手里拿着小皮鞭,我心里正得意。
不知怎么哗啦啦啦啦,我摔了一身泥.
gerry;
echo $string1;
?>
NULL(NULL):NULL是空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,当被赋值为NULL,或者尚未被赋值,或者被unset(),这三种情况下变量被认为为NULL。
<?php
error_reporting(0); //禁止显示PHP警告提示
$var;
var_dump($var);
$var1 = null;
var_dump($var1);
$var2 = NULL;
var_dump( $var2);
$var3 = "节日快乐!";
unset($var3);
var_dump($var3);
?>
2 什么是常量
什么是常量?常量可以理解为值不变的量(如圆周率);或者是常量值被定义后,在脚本的其他任何地方都不可以被改变。PHP中的常量分为自定义常量和系统常量。自定义常量是根据我们开发的需要,而定义的常量,它通过使用PHP中的函数define()定义。
define()函数的语法格式为:
bool define(string $constant_name, mixed $value[, $case_sensitive = true])
它有3个参数:
第一个参数“constant_name”为必选参数,常量名称,即标志符,常量的命名规则与变量的一致。第二个参数“value”为必选参数,它是常量的值。第三个参数“case_sensitive”为可选参数,指定是否大小写敏感,设定为true表示不敏感,一般不指定第三个参数的情况下,默认第三个参数的值为false。
注: string表示参数类型为字符串类型,mixed表示参数类型可以接受为多种不同的类型,case_sensitive = true表示默认为布尔类型TRUE。
<?php
define("PI", 3.14);
echo PI;
echo "<br />";
$p = "PII";
define($p, 3.1415);
echo PII;
?>
<?php
define("PI", 3.14);
$r=3;
echo "面积为:".(PI*$r*$r)."<br />";
echo "周长为:".(2*PI*$r)."<br />";
?>
系统常量是PHP已经定义好的常量,我们可以直接拿来使用,常见的系统常量有:
(1)__FILE__ :php程序文件名。它可以帮助我们获取当前文件在服务器的物理位置。
(2)__LINE__ :PHP程序文件行数。它可以告诉我们,当前代码在第几行。
(3)PHP_VERSION:当前解析器的版本号。它可以告诉我们当前PHP解析器的版本号,我们可以提前知道我们的PHP代码是否可被该PHP解析器解析。
(4)PHP_OS:执行当前PHP版本的操作系统名称。它可以告诉我们服务器所用的操作系统名称,我们可以根据该操作系统优化我们的代码。
<?php
echo __FILE__;
echo "<br />";
echo __LINE__;
echo "<br />";
echo PHP_VERSION;
echo "<br />";
echo PHP_OS;
echo "<br />";
?>
定义了常量,那么就要使用常量,那么如何获取常量值呢?
获取常量值的有两种方法取值:
第一种是使用常量名直接获取值。
第二种是使用constant()函数。它和直接使用常量名输出的效果是一样的,但函数可以动态的输出不同的常量,在使用上要灵活、方便,其语法格式如下:
mixed constant(string constant_name)
第一个参数constant_name为要获取常量的名称,也可为存储常量名的变量。如果成功则返回常量的值,失败则提示错误信息常量没有被定义。(注:mixed表示函数返回值类型为多种不同的类型,string表示参数类型为字符串类型)
<?php
$p="";
//定义圆周率的两种取值
define("PI1",3.14);
define("PI2",3.142);
//定义值的精度
$height = "中";
//根据精度返回常量名,将常量变成了一个可变的常量
if($height == "中"){
$p = "PI1";
}else if($height == "低"){
$p = "PI2";
}
$r=1;
$area = constant($p) * $r * $r;
echo $area;// 3.14
?>
如果常量被重复定义以后,PHP解析器会发出“Constant XXX already defined”的警告,提醒我们该常量已经被定义过。那么,在团队开发,或代码量很大的情况下,我们如何去判定一个常量是否被定义呢?
defined()函数可以帮助我们判断一个常量是否已经定义,其语法格式为:
bool defined(string constants_name)
它只有参数constant_name,指的是要获取常量的名称,若存在则返回布尔类型true,否则返回布尔类型false; (注:bool表示函数返回值类型为布尔类型)
<?php
define("PI1",3.14);
$p = "PI1";
$is1 = defined($p);
$is2 = defined("PI2");
var_dump($is1);// bool(true)
var_dump($is2);// bool(false)
?>