apache
配置文件:
httpd.conf
1、配置网站目录,路径用左斜扛,最后不带斜扛
DocumentRoot "e:/www"
2、目录设置
Directory "e:/www"
3、指定默认首页文件,文件名之间不用逗号分隔
DirectoryIndex index.html index.htm index.php
# 配置完后要重启apache服务才能生效
php安装
配置文件
将目录下的php.ini-dist重命名成php.ini
1、让apache加载php
在httpd.conf中最后面输入
LoadModule php5_module "c:/php/php5apache2_2.dll"
PHPIniDir "c:/php"
AddType application/x-httpd-php .php
2、测试php是否能正常运行
新建一个php文件,打印 phpinfo();
Loaded Configuration File 项目中可以看看当前使用的php.ini的位置
3、打开短风格与asp风格标签
short_open_tag = On
asp_tags = On
###修改php.ini后需要重启apache服务###
数据类型
使用函数var_dump()可以输出变量 的内容、类型、长度(字节)
(1)标量数据类型
a、字符串(string) $demo = 'test';
b、整型(integer) $demo = 1234;
整型可以用十进制,八进制(0开头),十六进制(0 x开头)表示
php中所有的整型数都是有符号的,如 123 实际为 +123
php中整型 数有最大限制,当超过最大限制时会自动转换成浮点数
c、浮点型(float) $demo = 12.33;
d、布尔型(boolean)
(2)复合数据类型
a、数组(array) $demo = array(1,2,5);
b、对象(object)
(3)特殊类型
空(Null)、资源(resource)
数据转换
1、转换成boolean类型
数值0、空字符串""与''、浮点型0.0、字符串"0"、没有成员的数组、特珠类型null、boolean本身的false
以上类型转换成boolean类型都是false,其他均为true
Demo:
$num = 0;
var_dump((bool)$num);
2、boolean类型转换成其他类型
转换成数值型,flase为0、true为1
转换成浮点型,false为0、true为1
转换成字符串,false为""、true为"1"
Demo:
$bool = false;
var_dump((int)$bool);//其它转换类型用float、string、array、object
3、通过函数转换
intval() 转换成整型
floatval()转换成浮点型
settype($string,type)把$string转换成指定类型
4、数值与字符串之间的转换
(1)、数值转换成字符串:在数值外面加个引号;
(2)、字符串转换成数值
从第一个非数字的字符(包含)开始全部舍弃[小数点算数字字符]
Demo:
$str = "25.3a45";
echo $str+3; //output 28.3
变量
1、变量的概念
什么是变量:临时存储数据的空间(内存)
如何回收变量:php中有个引用计数器,每有一个引用指向一个变量时,引用计数器就+1,每减少一个引用时,引用计数器-1
当一个变量的引用计数器计数结果为0时,php的垃圾回收机制就会启动并销毁该变量同时释放空间
2、变量的命名
(1)、以$开始
(2)、以数字、英文字母、下划线组成(第一个字符不能使用数字)
(3)、驼峰命名法(单词与单词间首字母大写)如:$userInfo
(4)、如何声明一个变量
a、单引号 $demo = '单引号';
只能转义单引号和转义符本身,不能解析变量,但是效率比双引号高
b、双引号 $demo = "双引号";
在双引号中可以解析变量,但是效率比较低
c、定界符(heredoc) [定界符是自定义的,开始与结束的定界符需一致]
定界符中可以任意写单双引号
$delimiter = <<< 开始定界符
变量内容
结束定界符;
//注意: 结束定界符必须单独一行,并且它前面不能有空格
3、变量的引用、赋值
引用:直接调用变量名称
赋值:$virable = 'value';
4、php系统预定义的变量
(1)$_GET :表单以get方式传递的值[数组形式]
(2)$_POST:表单以post方式传递的值[数值形式]
(3)$_FILES:表单中文件浏览框上传的数据信息
(4)$_REQUEST:get、post、cookie值都保存在这个变量中
(5)$_COOKIE、$_SESSION、$GLOBALS、$_SERVER
输出语句
echo $a;
echo $a,$b,$c; //输出时用多个逗号( , )连接,效率要比用点( . )连接高
print($a);
print_r($b);
注:echo是一个输出语句,没有返回值
ptinr()是一个函数,有返回值0或1
print_r()也是函数,可以输出复合型数据
转义符
转义符(\)作用:改变字符原有的作用而使字符原原本本的输出
在单引号中,转义符只能转义(')单引号本身和(\)反斜扛本身
在双引号中常用的需要转义的字符:
(")使用双引号本身、(\)使用反斜扛本身、
($)使用$符本身、(r)表示回车、(n)表示换行、(t)表示制表符
常量
定义:define('name','value');
说明:
1、常量的数据类型只能是标量类型
2、常量一般以大写字母命名
3、常量的定义与引用引都不用($)
//定义常量:
define('ROOT','php1204/');
//输出常量
echo ROOT;
echo constant('ROOT');
//判断常量是否定义
defined('ROOT')?true:false;
动态变量
定义:用一个变量来声明另一个变量
//Demo:
$a = 'test'; //$a = 11; 这里可以为数值型
$$a = 'demo'; //等同于 $test = 'demo';
$$$a = 'demo2';//等同于 $demo = 'demo2';
运算符
1、算术运算符
定义:( + )、( - )、( * )、( / )、( %)
注:浮点数的精度最大为14,当除法运算结果为无理数时,会自动取14位精度
浮点数的精度计算为从左向右第一个非0的数开始,算14位
//Demo:
$a = 5;$b = 6;
echo $a+$b;//output 11
2、字符运算符
定义:字符串的连接运算符( . )
//Demo:
$a = 'test';$b = 'is';
$c = $a.$b;//output testis
3、赋值运算符
( = ) 最常用的,如定义变量
( .=)将运算符前后的变量[后面有可能是字符串等]进行( . )运算后,再重新赋值给左边的变量
( += )、( -= )、( *= )、( /= )、( %= )
与( .= )类似,运算符前面先进行相应的运算,再把值赋给左边的变量
//在不声明第二个变量的情况下将两个整型变量的值转变
//Demo:
$num1 = 5;$num2 = 6;
$num1 += $num2;
$num2 = $num1 - $num2;
$num1 = $num1 - $num2;
4、自增自减运算
定义:( ++ )、( -- )
注:自增减运算分为前后自增减
$a++ $b--:先参加其它运算、再自增减
++$a --$b:先自增减、再参加其它运算
//Demo:
$a=5;$b=6;
echo $a+++$b;//++的优先级大于+,结果为($a++)+$b = 11;
echo $a+(++$b);//结果为12,$b先自增为7再加5 =12;
5、比较运算符
定义:( > )、( < )、( >= )、( <= )、
( == )等于:两个变量的值相等、
( != )、不等于:两个变量的值不相等,也可以写成 <>
(=== )恒等于:两个变量的值与数据类型都相等、
( !== )非恒等:值相同但类型不同返回true,类型相同值不相同返回true
注:所有的比较运算符运算的结果都是boolean型(true或false)
如果比较一个整数和字符串,则字符串会被转换为整数。
如果比较两个数字字符串,则作为整数比较。此规则也适用于 switch 语句
<?php var_dump
(0 == "a"); // 0 == 0 -> true var_dump("1" == "01"); // 1 == 1 -> true var_dump("1" == "1e0"); // 1 == 1 -> true switch ("a") { case 0: echo "0"; break; case "a": //这里永远不会被匹配,因为"a"已经被上面的0匹配了 echo "a"; break; } ?>
5、逻辑运算符
定义:
( ! ):逻辑非:取反,也可以用not,如:$b=true,!$b的值为false
( && ):两边同时为真时则为真,也可以用and,如:true && true 返回true
( || ):两边有一边为真时则为真,也可以用or,如:true||false 返回true
( xor ):异或:两边不同时为真,相同时为假,如:true xor false 返回true
注:逻辑运算符的优先级低于比较运算符,and与or的优先级低于&&与|| ,and与or的优先级低于 赋值运算符(=、+=......);
当使用&&时,当左边的条件不成立时,右边的语句将不会被执行,俗称短路与
如:$a=1;$b=2;$a==$b && print('demo');//这里print('demo')不会被执行;
当使用||时,当左边的条件成立时,右边的语句将不会被执行
如:$a=2;$b=3;$a < $b || $a++ == $b;echo $a; //这里输出结果为2,因为前面成立,所以$a++未被执行
// 下面的 foo() 不会被调用,因为它们被运算符“短路”了。 $a = (false && foo()); $b = (true || foo()); $c = (false and foo()); $d = (true or foo()); // "||" 的优先级比 "or" 高 $e = false || true; // $e 被赋值为 (false || true),结果为 true $f = false or true; // $f 被赋值为 false [Altair注:"=" 的优先级比 "or" 高] var_dump($e, $f); // "&&" 的优先级比 "and" 高 $g = true && false; // $g 被赋值为 (true && false),结果为 false $h = true and false; // $h 被赋值为 true [Altair注:"=" 的优先级比 "and" 高] var_dump($g, $h);
6、位运算
定义:在二进制数下进行计算
( ~ )位非:对运算的数中的0与1调换,如: ~7 ,即 ~111 结果为 0
( & )位与:两边都为1则为1,如:7&8,转换成二进制即为 111 & 1000 ,结果为0
( | )位或:两边有一个为1则为1,如7 | 8,即111 | 1000 ,结果为1111,转回十进制为15
( ^ )位异或:两边不同位的设为1,如 4^5,即 100 ^ 101 ,结果为 001 结果为1
注:位左移与位右移都是在二进制反码下进行的操作
0的反码与补码都 0,正数的反码与补码都不变
负数的反码为符号位不变,其它位取反,负数的补码为反码+1
( << )位左移:$a<<2 即将$a的位左移2位,位左移时,高位溢出,低位补0,每左移一位相当于乘以2
( >> )位右移:$b>>2 即将$a的位右移2位,位右移时,低位溢出,高位补符号数,每右移一次相当于除以2
7、运算符的优先级
(1)小括号、中括号
(2)在变量前面的++ 、--
(3)(int)(float)(string)(bool)(array)(object)
(4) ! (非)
(5)( * )、( / )、( %)优先级大于( + )、( - )
(6). (字符串连接符)
(7) 比较运算符 > >= < <= <> 优先级大于 == === != !==
(8)位运算符 & |
(9)逻辑运算符 && ||
(10)赋值运算符 =
流程控制语句
(1)条件语句
if(条件){条件成立时执行}
if(){}else{}
if(){}else if(){}else{} //可以用多个else if,当前面的条件成立时,后面的条件就不会再进行判断
(2)选择语句
switch($variable){
case "value1":
//语句;
break;
// .......这里还可以放很多个case
case "valuen":
//语句;
break;
default:
//语句;
//[break;]
}
每个case后面一定要加break;表示如果case成立时执行完语句后退出语句
条件语句一般用于对一个范围的判断,switch一般用于对一个点的判断,switch语句效率比if语句要高
(3)for循环语句
for(起始点;循环条件;变换步长值){
循环体:执行语句
}
循环可以嵌套
//输出99乘法表
//Demo:
echo '<h3 style="padding-left:45px;color:green">九 九 乘 法 表</h3>';
echo '<ul style="width:900;list-style:none;color:green;">';
for($i=1;$i<=9;$i++){
for($j=1;$j<=9;$j++){
if($j<=$i){
echo '<li style="width:98px;height:30px;line-height:30px;text-align:center;border:1px solid green;float:left;';
if($i<9){echo "border-bottom:none;";}
if($j<9 & $j< $i){echo "border-right:none";}
echo '">';
echo $j." X ".$i." = ".$j*$i;
echo '</li>';
} else {
echo '<li style="width:98px;height:30px;line-height:30px;text-align:center;border:1px solid #fff;float:left">';
echo '</li>';
}
}
}
echo '</ul>';
(4)while循环
语法:
$variable = 初始值;
while(循环条件){
循环体..
变换步长值;
}
(5)do...while循环
语法:
$variable = 初始值;
do{
循环体;变换步长;
}while(循环条件);
注:do...while是无条件先执行一次循环体,再去判断条件
(6)循环退出语句
break [$num] 跳出$num层循环,$num不写默认为1
Demo:
for($i=0;$i<100;$i++){
for($j=1;$j<105;$j++){
if($i==$j){
break; //这里将跳到$j循环的外面,进入$i的循环
break 2; //这里将退出两层循环,即跳到了$i循环的外面
}
}
}
continue 跳出本次循环,并继续执行下一次循环
for($j=1;$j<105;$j++){
if($j%5==0){
continue; //当能被5整除就退出本次循环,并进入下一次$j+1的循环
}
}
退出php程序的函数
(1) die('msg');输出语句,并且停止执行php程序
(2) exit('msg');输出语句,并且停止执行php程序
1.语法结构
<?php
//xml风格
echo (phpinfo());
?>
<?
//短风格
echo(phpinfo());
?>
<script language="php">
//script风格
echo(phpinfo());
</script>
2.注释
单行注释 //
#
多行注释 /* */
3.数据类型
8中基本数据类型:
标量类型(String,boolean,Integer,Float)
复合类型(Array.Object)
特殊类型(Resource,NULL,mixed.number,callback)
4.字符串
单引号 ' '
双引号 " "
定界符 <<<
单引号和双引号的区别:
双引号内的转义字符或变量可以被php引擎正确解析,而单引号仅识别\'和\\,其他的将打印为一个单引号和一个反斜杠
关于转义字符与html实体(双引号和单引号):
如果输出的字符将直接打印到浏览器,那么双引号和单引号必须采用html实体表示
如果双引号和单引号要在浏览器代码中出现,那么就必须采用转义符
5.php转义符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\f 换页符
\\ 反斜线
\$ 美元符号
\‘ 单引号
\" 双引号
文件中的换行符号:
Linux/Unix: \r\n
Windows: \n
6.布尔型
布尔型使用关键字true/false表示
档转换为布尔型时,以下值被认为false:
布尔值 false
整形 0
浮点型 0.0
空白字符串或字符串'0'
没有成员变量的数组
特殊类型 null
所有其他值都被认为true(包含任何资源类型)
7.整数型
整形可以用十进制,十六进制或八进制表示.可添加符号
如果用八进制符号,数字前必须添加0
如果用十六进制表示,数字前必须添加0x
8.浮点型
浮点型的字长和平台相关
9.数组
<?php
$arr=array();
$arr["username"]="aaa";
$arr["age"]=20;
$arr["sex"]="f";
//输出
echo "sex:{$arr["sex"]}";
echo "name:{$arr["username"]}";
?>
10.对象
<?php
class Person{
public $username="aaa";//注意属性的修饰符
public function getMag(){
echo "username:".$this->username;
}
}
$p=new Person();
$p->getMsg();
?>
11.特殊类型
资源(Resource)
资源是一种特殊的数据类型,用来表示一种php的外部资源,例如数据库访问,文件访问,目录操作,图像操作等
程序员将无法触及这种类型的变量,必须通过专门的函数访问
数据库访问必须通过Mysql函数库,Mysqli函数库或PDO函数库实现
文件访问必须通过FileSystem函数库实现
目录操作必须通过Directory函数库实现
图像操作必须通过GD函数库实现
空值(NULL)
12.伪类型
mixed 可以接受多种不同的类型
number 可以是integer或者float
callback 接受用户自定义的函数作为参数。还可以是一个对象的方法,包括静态类的方法
13.变量
变量是命名内存位置,其中包含数据,可以在程序执行期间进行处理
声明变量: $变量名称;
php是"弱"语言,其对变量声明没有特殊要求
变量赋值: $变量名称=变量值;
变量的作用域:局部变量(仅限函数内部)和全局变量(函数外部声明的变量,本程序文件中有效)
函数外使用局部变量值的时候必须透过return
在函数内部不能直接使用全局变量,要使用global关键字加载全局变量.例子:global $one,$two;
预定义变量:$_ENV,$_GRT,$_POST,$_FILES,$_SERVER,$_COOKIE,$_REQUEST,$_SESSION,$_GLOBALS
14.常量
定义常量:define(string name,mixed value);
常量的数据类型只能为标量类型
常量的名称一般由大写字母组成
常量在定义和引用时无需美元符号
魔术常量:
_LINE_:文件中的当前行号
_FILE_:文件的完整路径和文件名
_CLASS_:类的名称
_FUNCTION_:函数名称
15.输出语句
echo 输出一个或多个字符
void echo(string $arg[,string $arg[,...]])
print 打印字符
mixed print(string $arg)
print_r 打印变量易于理解的信息
void var_dump(mixed $expr[,...])