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.com.cn";
$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.com.cn!");
echo GREETING;
定义对大小写不敏感的常量
define("GREETING", "Welcome to W3School.com.cn!", 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模式、查询语言丰富、详尽的文档和中文注释
获取框架:http://www.thinkphp.cn

单一入口框架:在一个网站中,所有请求都是指向一个脚本文件
                         好处:项目结构规范,控制灵活,更加安全
典型代表:     zend、CodeIgniter、cakephp等









































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏洛克·林

有钱的捧个钱💰场或人场~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值