之路"/>
php之路
php是一种创建动态交互性站点的强有力的服务器端脚本语言 php能够生成动态页面内容,创建、打开、读取、写入、删除以及关闭服务器上的文件 php能够接收表单数据,发送并取回cookies;能够添加、删除、修改数据库中的数据 php能限制用户访问网站中的某些页面,能够对数据进行加密 php不仅能输出HTML,还能输出图像、PDF文件、甚至Flash影片。可以输出任何文本,比如XHTML和XML php能运行于各种平台,且能兼容几乎所有服务器,支持多种数据库,可高效地运行在服务器端 php脚本可放置于文档中的任何位置
可变函数,即通过变量的值来调用函数,因为变量的值是可变的 php的注释 //和#是单行注释 /* */多行注释
php所有用户定义的函数、类和关键字(例如if、else、echo等等)都对大小写不敏感,不过所有变量都对大小写敏感
变量以$符号开头,其后是变量的名称;变量名称必须以字母或下划线开头,不能以数字开头 变量名称只能包含字母数字字符和下划线(A-z、0-9以及_) 变量会在首次为其赋值时被创建 php有三种不同的变量作用域:local(局部)、global(全局)、static(静态) 全局变量不能在函数中使用,若想使用只能在函数内部变量前使用global关键字
PHP 同时在名为 $GLOBALS[index] 的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量 $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
static 关键词 当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。要完成这一点,请在您首次声明变量时使用 static 关键词。然后,每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息 该变量仍然是函数的局部变量
php输出 echo能够输出一个以上的字符串,而print只能输出一个字符串,并始终返回1 echo比print稍快,因为它不返回任何值 echo和print都是一个语言结构,有无括号均可使用:echo或echo()、print或print() <?php
$txt1="Learn PHP";
$txt2="W3School"; $cars=array("Volvo","BMW","SAAB"); echo $txt1;
echo "<br>";
echo "Study PHP at $txt2";
echo "My car is a {$cars[0]}"; ?>
print $txt1;
print "<br>";
print "Study PHP at $txt2";
print "My car is a {$cars[0]}";
数据类型
字符串 可以是引号内任何文本,可使用单引号或双引号 整数 可用三种格式规定整数:十进制、十六进制或八进制 var_dump() 会返回变量的数据类型和值 数组 $cars=array("Volvo","BMW","SAAB"); var_dump($cars); 对象 对象是存储数据和有关如何处理数据的信息的数据类型。在PHP中必须明确地声明对象 使用class先声明对象的类,在类的实例中使用此数据类型 <?php
class Car
{
var $color;
function Car($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
} ?> NULL值 特殊的NULL值表示变量无值。NULL是数据类型NULL唯一可能的值 NULL值标示变量是否为空。也用于区分空字符与空值数据库,也可通过把值设置为NULL将变量清空 <?php
$x="Hello world!";
$x=null;
var_dump($x); ?> 字符串函数 strlen()函数返回字符串的长度,以字符计 strpos()函数用于检索字符串内指定的字符或文本 echo strpos("Hello world!","world");
常量是单个值的标识符。在脚本中无法改变改值 有效的常量名以字符或下划线开头(常量名称前面没有$符号) 常量贯穿整个脚本是自动全局的 定义对大小写敏感的常量 define("GREETING", "Welcome to W3School!"); echo GREETING; 定义对大小写不敏感的常量 define("GREETING", "Welcome to W3School!", true); echo greeting;
串接 . $txt2 = $txt1."word!" 串接赋值 .= $txt .= "word!" === 表示全等,相等并且类型相同 <> 不等于时 返回true !== 不全等时 返回true 逻辑运算符 and 与 or 或 xor 异或 && 与 || 或 ! 非 数组运算符 + 联合 == 相等 === 全等 != 不相等 <> 不相等 !== 不全等
php能正常使用if和switch语句
循环 while、do...while、for、foreach foreach循环只适合于数组,并用于遍历数组中的每个键值对 <?php $colors = array("red","green","blue","yellow"); foreach ($colors as $value) {
echo "$value <br>";
} ?> 函数 php真正力量来自它的函数:它拥有超过1000个内建函数 除了内建函数,还可以创建自己的函数。函数只有被调用时才会执行
内置函数 用于操作的字符串变量 = str_replace("要替换的字符串","用于替换的字符串",用于操作的字符串变量); 判断函数是否存在 function_exists('func')
创建自定义函数 定义函数声明以function开头 function functionName() {
被执行的代码; } 函数名能以字母或下划线开头(而非数字),函数名对大小写不敏感 参数 <?php
function familyName($fname,$year) {
echo "$fname Zhang. Born in $year <br>"; } familyName("Li","1975");
familyName("Hong","1978");
familyName("Tao","1983"); ?> 默认参数值 <?php
function setHeight($minheight=50) {
echo "The height is : $minheight <br>"; } setHeight(350);
setHeight(); // 将使用默认值 50
setHeight(135);
setHeight(80);
?>
返回值 <?php
function sum($x,$y) {
$z=$x+$y;
return $z; } echo "5 + 10 = " . sum(5,10) . "<br>";
echo "7 + 13 = " . sum(7,13) . "<br>";
echo "2 + 4 = " . sum(2,4);
?>
数组 PHP 中, array() 函数用于创建数组 $cars=array("Volvo","BMW","SAAB"); php有三种数组类型:索引数组、关联数组和多维数组 count() 函数用于返回数组的长度(元素数)
遍历索引数组 <?php
$cars=array("Volvo","BMW","SAAB"); $arrlength=count($cars); for($x=0;$x<$arrlength;$x++) {
echo $cars[$x];
echo "<br>";
}
?>
关联数组 关联数组是使用您分配给数组的指定键的数组 两种创建关联数组的方法: 一、$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); 二、 $age['Peter']="35"; $age['Ben']="37"; $age['Joe']="43"; 随后可以在脚本中使用指定键: <?php $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43"); echo "Peter is " . $age['Peter'] . " years old."; ?>
遍历关联数组: <?php $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43"); foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?>
数组排序 sort() - 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据值,以升序对关联数组进行排序 ksort() - 根据键,以升序对关联数组进行排序 arsort() - 根据值,以降序对关联数组进行排序 krsort() - 根据键,以降序对关联数组进行排序 超全局变量 PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们
多维数组 php能理解2、3、4或5级甚至更多级的多维数组。超过3级的数组对于大多数人难以管理 数组的维度指示您需要选择元素的索引数 $cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15) ); <?php
for ($row = 0; $row < 4; $row++) {
echo "<p><b>Row number $row</b></p>";
echo "<ul>";
for ($col = 0; $col < 3; $col++) {
echo "<li>".$cars[$row][$col]."</li>";
}
echo "</ul>";
} ?> 日期和时间 date()函数用于对日期或时间进行格式化 date()函数把时间戳格式化为更易读的日期和时间
date(format,timestamp)format为必选,规定时间戳的格式;timestamp为可选,规定时间戳,默认是当前时间和日期 <?php
echo "今天是 " . date("Y/m/d") . "<br>";
echo "今天是 " . date("Y.m.d") . "<br>";
echo "今天是 " . date("Y-m-d") . "<br>";
echo "今天是 " . date("l"); ?>
获得时区 <?php
date_default_timezone_set("Asia/Shanghai");
echo "当前时间是 " . date("h:i:sa");
?>
php有构造函数和析构函数 构造函数是在对象创建时候自行调用,析构函数是在对象被销毁时自行调用 function _ _construct(){
} function _ _destruct(){
} $car = new Car(); //实例化时会调用构造函数 unset($car); //销毁时会调用析构函数 双下划线
静态关键字 静态属性与方法可以在不实例化类的情况下调用,直接使用
类名::方法名
的方式进行调用。静态属性 不允许 对象使用->操作符调用
class Car { private static $speed = 10; public static function getSpeed() { return self::$speed;
}
} echo Car::getSpeed(); //调用静态方法 trim去除一个字符串两端空格 rtrim去除一个字符串右部空格,r是right的缩写 ltrum去除一个字符串左部空格,l是left的缩写
获取字符串中中文长度: mb_strlen($str,"uft-8"); 英文字符截取函数 substr(字符串变量,开始截取的位置,截取个数) 中文字符串截取函数 mb_substr(字符串变量,开始截取的位置,截取个数,网页编码...常用utf-8) 查找字符串函数 strpos(要处理的字符串,要定位的字符串,定位的起始位置[可选]) 替换字符串函数 str_replace(要查找的字符串,要替换的字符串,被搜索的字符串,替换进行计数[可选])
格式化字符串 sprintf(格式,要转化的字符串) 字符串合并函数 implode(分隔符[可选],数组) 返回字符串 字符串分割函数 explode(分隔符[可选],数组) 返回数组
字符串转义 addslashes(); 正则表达式是对字符串进行操作的一种逻辑公式,就是用一些特定的字符组合成一个规则字符串,称之为正则匹配模式 $p= '/apple/'; $str= 'apple banna' if(preg_match($p,$str)) 字符串'/apple/'就是一个正则表达式,他用来匹配源字符串中是否存在apple字符串
数据库操作 当前主流的数据库有MsSQL,MySQL,Sybase,Db2,Oracle,PostgreSQL,Access等,这些数据库PHP都能够安装扩展来支持 一般情况下常说的LAMP架构指的是:Linux、Apache、Mysql、PHP,因此Mysql数据库在PHP中的应用非常广泛 if(function_exists('mysql_connect')) 数据库扩展 像Mysql常用的扩展有原生的mysql库,也可以使用增强版的mysqli扩展,还可以使用PDO进行连接与操作
mysql扩展进行数据库连接的方法 $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');
mysqli扩展 $link = mysqli_connect('mysql_host', 'mysql_user', 'mysql_password');
PDO扩展 $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
$dbh = new PDO($dsn, $user, $password);
设置当前连接使用的字符编码 mysql_query("set names 'utf8'");
MySQL查询 在数据库建立连接以后就可以进行查询,采用mysql_query加sql语句的形式向数据库发送查询指令 $res = mysql_query('select * from user limit 1'); 对于查询类的语句会返回一个资源句柄(resource),可以通过该资源获取查询结果集中的数据 $row = mysql_fetch_array($res);
var_dump($row);
当存在多个数据库连接时,可通过参数指令从那个连接中进行查询 $link1 = mysql_connect('127.0.0.1', 'code1', '');
$link2 = mysql_connect('127.0.0.1', 'code1', '', true); //开启一个新的连接 $res = mysql_query('select * from user limit 1', $link1); //从第一个连接中查询数据 MySQL插入数据 $sql = "insert into user(name, age, class) values('李四', 18, '高三一班')"; mysql_query($sql); //执行插入语句 若数据是存储在变量中 $name = '李四';
$age = 18;
$class = '高三一班';
$sql = "insert into user(name, age, class) values('$name', '$age', '$class')"; mysql_query($sql); //执行插入语句 执行插入语句后,可以得到自增的主键id,通过PHP的mysql_insert_id函数可以获取该id $uid = mysql_insert_id();
这个id作用很大,可用来判断是否插入成功,或作为关联ID进行其他的数据操作
国产、开源、面向对象、MVC框架 简单易用的MVC模式、查询语言丰富、详尽的文档和中文注释 获取框架:
单一入口框架:在一个网站中,所有请求都是指向一个脚本文件 好处:项目结构规范,控制灵活,更加安全 典型代表: zend、CodeIgniter、cakephp等
更多推荐
php之路
发布评论