第1章 PHP概述

1.1  历史(PHP4、PHP5、PHP5.3、PHP6[未发布])

1.2 一般语言特性(实用性、强大功能、可选择性、成本[开源])

第2章 环境配置

2.1 安装的前提条件(apache或IIS7)

2.2 在Linux上安装Apache和PHP

2.3 在Windows上安装Apache和PHP

2.4 在Windows上安装IIS和PHP

2.5 测试安装

2.6 配置PHP

2.7 运行时配置

2.8 选择代码编辑器

2.9 选择WEB托管服务商

第3章 PHP基础

3.1 在Web页面中嵌入PHP代码

3.2 为代码添加注释

<?php  echo "hello world!" ?> //默认语法
<? echo "hello world!"?> #短标签
/* 这是一段多行注释*/

3.3 向浏览器输出数据

//print语句,如下两句输出结果相同
<?php print("<p>Hello PHP!</p>"); ?>
<?php $str="PHP";print "<p>Hello $str!</p>"; ?>
//echo语句,几乎等同于print
<?php $str1="A";$str2="B";echo $str1." and ".$str2; ?>
//printf语句,输出由静态和若干变量动态信息的混合
<?php printf ("<p>%d bottles of tonic water.</p>",100) ?>
/* %b 整数,显示为二进制
%c 整数,显示为对应ASCII字符
%d 整数,显示为有符号十进制
%f 浮点数,显示为浮点数
%o 整数,显示为八进制
%s 字符串,显示为字符串
%u 整数,显示为无符号十进制
%x 整数,显示为小写十六进制
%X 整数,显示为大写十六进制 */
//sprintf语句,输与printf类似,但它将输出赋值给一个字符串
$cost=sprintf("$%.2f",43.2);//$cost=$43.20

3.4 PHP支持的数据类型

  标量数据类型:布尔型、整型、浮点型(单精度[float]、双精度[double]、实数[real number])、字符串

  复合数据类型:数组、对象

  类型强制转换操作符

/* (array)                    转为数组
(bool)或(boolean) 转为布尔值
(int)或(integer) 转为整数
(object) 转为对象
(float)或(double)或(real) 转为浮点数
(string) 转为字符串*/
$score=(int) 14.8; echo $score;//
$str="this is str"; echo (int) $str;//
$score=114; $scoreboard=(array) $score;echo $scoreboard[0];//114,数字被转换为数组的一个成员
$name="Gavin"; $obj=(object) $name; echo $obj->scalar;//Gavin,任何数据都可转为对象,并默认成为对象的scalar属性

  类型自动转换

$num=5;$str="15px";echo $num+=$str;//20,字符串自动转整数
$str="1.0";if($str) echo "this is true";//this is true,字符串自动转布尔型
$val1="1.2e2";$val2=2; echo $val1*$val2;//240,字符串转整数

  与类型有关的函数:gettype(获取类型)、settype(转换类型)

$val1="1.2e2";echo gettype($val1);//string
//共有8个可能的返回值:array、boolean、double、integer、object、resource[资源]、string和unknown type
$val1="15px";echo settype($val1,"integer")."+".$val1;//1+15
//转换成功返回true,可以指定的7种类型:array、boolean、float、integer、null、object、string

  类型判断函数

//is_array,is_bool,is_float,is_integer,is_null,is_numeric,is_object,is_resource,is_scalar,is_string
$num=43;printf("\$num is of type integer:%d<br/>",is_integer($num));//43 is of type integer:1

3.5 标识符(即自定义名称,区分大小写)

3.6 变量

  变量声明:以美元符$开头,遵循标识符的命名规范,不需要显示的声明

$val1="red";//按值赋值
$val2=& $val1;//引用赋值,$val2和$val1都等于“red”

  变量的作用域:局部变量、函数参数、全局变量、静态变量(变量名前加关键字STATIC,函数退出不会销毁,再次调用函数可使用缓存)

  PHP的超级全局变量:$_SERVER、$_GET、$_POST、$_COOKIE、$_FILES、$_ENV、$_SESSION

  变量的变量

$str="A";$A="B";echo $$str;//B,$$str相当于$A

3.7 常量(一旦定义无法修改,使用define()函数定义)

define("PI",3.1415926);printf("<p>The value of PI is %f</p>",PI)

3.8 表达式

  操作数(通常指变量)

  操作符:操作符的优先级和结合性,操作符种类(算术、赋值、字符串、自增自减、逻辑、相等、比较、位)

$a="abc"."def";//abcdef,字符串拼接看,这里.相当于JS中的+
$a.="ghi";//abcdefghi,拼接赋值,这里.=相当于JS中的+=

3.9 字符串插入

  双引号(包裹字符串)

  转义序列

  单引号(与双引号不同,解析时变量和转义序列不会被解释

  大括号(常用于嵌入复杂数据类型,如{$arr['name']})

  heredoc(用于输出大量文本)

  Nowdoc(php5.3新特性,等同于heredoc)

$a="abc";echo "$a is good \n";//abc is good,双引号解析
$a="abc";echo '$a is good \n';//$a is good \n,单引号不解析

3.10 控制结构

  条件语句:if、else、elseif、switch

  循环语句:while、do...while、for、foreach、break和goto和continue

  文件包含语句:include、include_once、require(与include的区别是在if为假,依然请求指定文件到当前位置)、require_once

第4章 函数

4.1 调用函数

4.2 创建函数

function fun1($a){$a+=1;};$num=1;fun1($num);echo $num;//1,按值传递参数,函数内修改变量的值,不影响其函数外的值
function fun2(&$a){$a+=1;};$num=1;fun2($num);echo $num;//2,按引用传递参数,函数内修改变量的值,函数外同步修改
function fun($a,$b=2){echo $a*$b};$num=5;fun($num);//10,$b为参数默认值
function fun(){return array("red","blue","green");};list($r,$b,$g)=fun();echo "$r,$b,$g";
//return函数返回值,需要返回多个值时使用数组,list()函数给一组变量赋值
function fun($a){if($a>0){return $a+fun($a-1);}};echo fun(5);//15,递归函数

4.3 函数库

第5章 数组

5.1 什么是数组

5.2 创建数组

$arr1[0]="one";$arr1[1]="two";//直接建立引用即可
$arr2[]=1,$arr2[]=2;//若索引值是数值且递增,创建时可省略索引值
$arr3["name"]="gavin",$arr3["age"]=30;//创建关联数组,不过必须一直使用键
$arr4=array("one","two");//使用array()创建索引数组
$arr5=array("name"=>"gavin","age"=>30);//使用array()创建关联数组
$arr=array("one","two");list($a,$b)=$arr;echo "$a + $b";//one + two,list函数提取数组
$die=range(1,5);//range函数预定义值来填充数组,类似$die=array(1,2,3,4,5)
$state=array(1,2);printf("\$state is array:%s",(is_array($state)?"true":"false"));//is_array函数测试数组

5.3 输出数组

$arr=array("one","two");foreach($arr AS $a){echo "{$a}\n";};//使用foreach遍历输出,多维数组可考虑vprintf函数
print_r($arr);//Array ( [0] => one [1] => two ),打印数组用于测试

5.4 添加和删除数组元素

$arr=array("two");
array_unshift($arr,"zero","one");print_r($arr);//在数组头添加一个或多个
array_push($arr,"three","four");print_r($arr); //在数组尾添加一个或多个
echo array_shift($arr)."\n";print_r($arr);   //在数组头删除,返回删除值,每次删除一个
echo array_pop($arr)."\n";print_r($arr); //在数组尾删除,返回删除值,每次删除一个

5.5 定位数组元素

$a="one";$arr=array("one","two");if(in_array($a,$arr)){echo '$a in $arr'}//搜索数组,返回布尔值
$arr["one"]=1;if(array_key_exists("one",$arr)){echo 'one in $arr';}//搜索关联数组键,返回布尔值
$key=array_search(1,$arr);if($key){echo "$key : $arr[$key]";}//搜索关联数组值,如果找到返回相应键,否则false
$arr=array("name"=>"gavin","age"=>30);
print_r(array_keys($arr));//Array ( [0] => name [1] => age ),获取数组的键组
print_r(array_values($arr));//Array ( [0] => gavin [1] => 30 ),获取数组的值组

5.6 遍历数组

$arr=array("name"=>"gavin","age"=>30);
while(key($arr)){echo key($arr)."\n";next($arr);}//name age,遍历数组键
reset($arr);//重置指针到数组首位,(next)下一位、(prev)上一位,(end)末尾位
while(current($arr)){echo current($arr)."\n";next($arr);}//gavin 30,遍历数组值

5.7 确定数组的大小和唯一性

$arr=array("a","b");echo count($arr);//2,count确定数组大小,与sizeof相同
$arr1=array("a","b","c","a");print_r(array_count_values($arr1));//统计数组元素出现的频次
//Array ( [a] => 2 [b] => 1 [c] => 1 )
print_r(array_unique($arr1));//删除重复项

5.8 数组排序

$arr=array("one","two","three");
print_r(array_reverse($arr));//数组倒序,Array ( [0] => three [1] => two [2] => one )
print_r(array_flip($arr));//数组键和值对换,Array ( [one] => 0 [two] => 1 [three] => 2 )
sort($arr);print_r($arr);//数组排序,破坏键值关联,Array ( [0] => one [1] => three [2] => two )
$arr=array("one","two","three");//重置
asort($arr);print_r($arr)//同sort,保持键值关联,Array ( [0] => one [2] => three [1] => two )
rsort(array);//与sort相同,排序相反
arsort(array);//与asort相同,排序相反
natsort(array);//自然排序
natcasesort(array);//不区分大小写的自然排序
ksort(array);//按键值对数组排序
krsort(array);//与ksort相同,排序相反
usort(array,callback);//根据自定义规则排序

5.9 合并、拆分、接合和分解数组

array_merge(array1,array2);//合并两个或多个数组
array_merge_recursive(array1,array2);//与array_merge相同,仅关联数组出现相同键时,前置是替换,它是将值合并为数组
array_combine(keys,values);//将键数组和值数组,组合为新的关联数组,两者大小要相同且不为空
array_slice(array,[offset,[length]]);//拆分数组
array_splice(array,[offset,[length]]);//接合数组
array_intersect();//求数组的交集
array_intersect_assoc();//求关联数组的交集
array_diff();//求数组的差集
array_diff_assoc();//求关联数组的差集

5.10 其他有用的数组函数

array_rand(array[,num]);//返回一组随机的键
shuffle();//随机洗牌数组元素
array_sum();//对数组中的值求和
array_chunk();//划分数组

第6章 面向对象的PHP

6.1 OOP的好处(封装、继承、多态)

6.2 关键的OOP概念(类、对象、属性)

读书笔记《PHP与MySQL程序设计》一的更多相关文章

  1. 【鸟哥的Linux私房菜】笔记1

    Linux是什么 从操作系统与cpu架构关系到linux  Richard Mathew Stallman GPL 关于GNU计划 Linux的发展 Linux的核心版本 Linux的特色 Linux ...

  2. 【鸟哥的Linux私房菜】笔记3

    正确地开机 最好不要使用root账号登陆!GNOME图形界面 View items as a list X WindowShell 文本交互界面bash是Shell的名称,Linux的默认壳程序就是b ...

  3. 【鸟哥的Linux私房菜】笔记2

    Linux的应用 学习资源整理 安装记录 >< 1.Linux的应用: 网络服务器 数据库 学术机构的高效运算任务 嵌入式系统 ... 2.挂载与磁盘分区 学习资源整理 学习 1.书上的网 ...

  4. 《鸟哥的Linux私房菜》笔记——02. 关于Linux

    Unix 历史 1969年以前:伟大的梦想--Bell, MIT 与 GE 的「Multics」系统 1969年:Ken Thompson 的小型 file server system 1973年:U ...

  5. 《鸟哥的Linux私房菜》笔记——03. 磁盘分区

    Everything is a file. 常见硬件对应于 Linux 下的文件(/dev目录下) 装置 装置在Linux内的档名 SCSI/SATA/U盘硬盘机 /dev/sd[a-p] U盘 /d ...

  6. 鸟哥的linux私房菜学习笔记 __ 命令与文件的搜寻

    连续输入两次[tab]按键就能够知道使用者有多少命令可以下达.那你知不知道这些命令的完整档名放在哪里?举例来说,ls 这个常用的命令放在哪里呢? 就透过 which 或 type 来找寻吧! 范例一: ...

  7. 【鸟哥的Linux私房菜】笔记

    操作系统核心的功能! 驱动程序与操作系统的关系 2. [计算机组成之组件] 3.CPU实际要处理的数据完全来自于主存储器,这是一个很重要的概念! 4.CPU是整个计算机系统最重要的部分,那么目前世界上 ...

  8. 《鸟哥的Linux私房菜》笔记——04. 简单命令行

    键入命令 [dmtsai@study ~]$ command [-options] parameter1 parameter2 ... 指令 選項 參數(1) 參數(2) 注意:有时也可以使用 + 放 ...

  9. 鸟哥的Linux私房菜学习笔记——文件权限与目录配置

    Linux的文件权限和目录配置 在linux中的每个用户必需属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. (1)所有者 一般为文件的创建者,谁创建了该文件,就是天 ...

  10. 鸟哥的Linux私房菜学习笔记(1)

    2014/10/29 1.档案的权限管理分为三个部分: 拥有者.群组.其他 2.ls -al 命令可以看到档案的详细信息 3.档案的属性中由十个部分构成 第一个部分是档案类型 -代表档案.d代表文件夹 ...

随机推荐

  1. Platt SMO 和遗传算法优化 SVM

    机器学习算法实践:Platt SMO 和遗传算法优化 SVM 之前实现了简单的SMO算法来优化SVM的对偶问题,其中在选取α的时候使用的是两重循环通过完全随机的方式选取,具体的实现参考<机器学习 ...

  2. 【java设计模式】【创建模式Creational Pattern】简单工厂模式Simple Factory Pattern(静态工厂方法模式Static Factory Method Pattern)

    public class Test { public static void main(String[] args){ try{ Factory.factory("A").doSt ...

  3. SQL Server 修改AlwaysOn共享网络位置

    标签:MSSQL/故障转移 概述 很多人一开始搭建Alwayson的时候对于共享网络位置的选择不是很重视, 导致后面需要去修改这个路径.但是怎样修改这个路径呢?貌似没有给出具体的修改选项,但是还是有地 ...

  4. jest for elasticsearch

    *elasticsearch(后面简称es) 背景: 目前项目应用中对es的操作用的是http(自己封装)的一套方法:有些数据处理起来还是需要定制开发处理,不是很方便.正好需要对本项目重新进行改造,于 ...

  5. 《跟我学IDEA》五、快捷键(编码利器)

    上一篇博文,我们学习了idea的一些模版配置,但是只有模版是不行的,一款编辑器如何能为我们灵活的使用,快捷键的功劳不用多说大家也明白.今天我们就来学习快捷键的配置以及一些常用的快捷键的介绍,为让家能更 ...

  6. rm 命令详解

    rm  作用: 删除一个目录中的一个或多个文件或目录,也可以将某个目录及下属的所有文件及子目录均删除掉, 对于连接文件只是删除整个连接文件,而保持原有文件. 注意: 使用rm 命令要格外小心,因为一旦 ...

  7. 阅读MDN文档之层叠与继承(二)

    目录 The cascade Importance Specificity Source order A note on rule mixing Inheritance Controlling inh ...

  8. MHA高可用架构与Atlas读写分离

    1.1 MHA简介 1.1.1 MHA软件介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton ...

  9. tomcat中使用mysql连接池的配置

    1.下载相应的jar包,添加到工程中 需要下载的包主要有commons-pool2-2.2 commons-dbcp2-2.0.1-src commons-dbcp2-2.0.1  commons-c ...

  10. 使用图片地图减少HTTP请求数量

    前言 最近在看<高性能网站建设>,记录一下所学. 现在很多网站都是图片形式的导航,点击图片跳转到对应的链接.如果导航项目很多的话,图片的数量就会很多,每需要加载一张图片就会多一个HTTP请 ...