读书笔记《PHP与MySQL程序设计》一
第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程序设计》一的更多相关文章
- 【鸟哥的Linux私房菜】笔记1
Linux是什么 从操作系统与cpu架构关系到linux Richard Mathew Stallman GPL 关于GNU计划 Linux的发展 Linux的核心版本 Linux的特色 Linux ...
- 【鸟哥的Linux私房菜】笔记3
正确地开机 最好不要使用root账号登陆!GNOME图形界面 View items as a list X WindowShell 文本交互界面bash是Shell的名称,Linux的默认壳程序就是b ...
- 【鸟哥的Linux私房菜】笔记2
Linux的应用 学习资源整理 安装记录 >< 1.Linux的应用: 网络服务器 数据库 学术机构的高效运算任务 嵌入式系统 ... 2.挂载与磁盘分区 学习资源整理 学习 1.书上的网 ...
- 《鸟哥的Linux私房菜》笔记——02. 关于Linux
Unix 历史 1969年以前:伟大的梦想--Bell, MIT 与 GE 的「Multics」系统 1969年:Ken Thompson 的小型 file server system 1973年:U ...
- 《鸟哥的Linux私房菜》笔记——03. 磁盘分区
Everything is a file. 常见硬件对应于 Linux 下的文件(/dev目录下) 装置 装置在Linux内的档名 SCSI/SATA/U盘硬盘机 /dev/sd[a-p] U盘 /d ...
- 鸟哥的linux私房菜学习笔记 __ 命令与文件的搜寻
连续输入两次[tab]按键就能够知道使用者有多少命令可以下达.那你知不知道这些命令的完整档名放在哪里?举例来说,ls 这个常用的命令放在哪里呢? 就透过 which 或 type 来找寻吧! 范例一: ...
- 【鸟哥的Linux私房菜】笔记
操作系统核心的功能! 驱动程序与操作系统的关系 2. [计算机组成之组件] 3.CPU实际要处理的数据完全来自于主存储器,这是一个很重要的概念! 4.CPU是整个计算机系统最重要的部分,那么目前世界上 ...
- 《鸟哥的Linux私房菜》笔记——04. 简单命令行
键入命令 [dmtsai@study ~]$ command [-options] parameter1 parameter2 ... 指令 選項 參數(1) 參數(2) 注意:有时也可以使用 + 放 ...
- 鸟哥的Linux私房菜学习笔记——文件权限与目录配置
Linux的文件权限和目录配置 在linux中的每个用户必需属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. (1)所有者 一般为文件的创建者,谁创建了该文件,就是天 ...
- 鸟哥的Linux私房菜学习笔记(1)
2014/10/29 1.档案的权限管理分为三个部分: 拥有者.群组.其他 2.ls -al 命令可以看到档案的详细信息 3.档案的属性中由十个部分构成 第一个部分是档案类型 -代表档案.d代表文件夹 ...
随机推荐
- Intellij 解除(去除)SVN关联
方法一:通过Intellj 来处理 1. 安装插件 打开Intellij的setting(ctrl+alt+s),选择plugins,在右边搜索框输入"SVN",搜索.选择&quo ...
- spark-submit参数说明--standalone
示例: spark-submit [--option value] <application jar> [application arguments] 参数名称 含义 --master M ...
- 如何在markdown中插入表情
Markdown是很好用的呀,个人灰常的喜欢,也是灰常漂亮的,但是如何在写文章的时候插入表情呢,下面给出一部分代码
- mysql创建新用户及新用户不能本地登陆的问题
最近在搭建hadoop集群,主节点上面安装的MySQL数据库,对着方面不熟悉,为hive.Ooize等服务统一使用的root账号和密码,为了安全一些库对于某些用户是不可见的,所以需要针对不同的服务设置 ...
- 程序员的自我救赎---10.1:APP版本控制系统
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- Java NIO (一) 初识NIO
Java NIO(New IO / Non-Blocking IO)是从JDK 1.4版本开始引入的IO API , 可以替代标准的Java IO API .NIO与原来标准IO有同样的作用和目的,但 ...
- Collection源码图
java基础是否扎实,在于多读源码,比如集合 IO Socket 多线程并发包等 最近将集合框架的源码读了以下,总结了一些,下图所示
- JaCoCo 代码覆盖率工具(基于Maven+TestNG)
JaCoco是一个代码覆盖率库. 官方网站:http://www.jacoco.org/ 安装: 以 Maven(http://www.testclass.net/maven/) 安装为例: < ...
- springBoot系列教程06:参数验证及验证信息国际化
在springboot应用中要验证参数是否正确很简单,web应用已经包含了validation的 1.定义需要被验证的参数实体,并用注解标明错误类别和错误信息 package com.xiao.dom ...
- beanstalk 安装
1.安装 # wget https://github.com/kr/beanstalkd/archive/v1.10.tar.gz # tar xzvf v1.10 # cd beanstalkd-1 ...