PHP学习笔记之一


Posted in PHP onJanuary 17, 2011

配置PHP以及MySQL的过程略去,如果在Ubuntu下,参考 Ubuntu 10.04 Installation Memo 即可。

1. 基本语法

要在HTML代码中嵌入PHP脚本的方法是在<?php ?>中书写代码。向浏览器输出数据采用echo或者print函数。echo可以接受多个参数,print 只能接受一个。echo的形式是
void echo(string arg1,[,…string argn]);
PHP语法允许省略括号。 例如,

<?php 
$my =' my '; 
echo 'Hello',$my,'world' 
?>

将会在浏览器上输出 Hello my world
PHP 还支持一个和C语言很像的printf函数,例如 printf(‘ %d apples',100),将会输出 100 apples。sprintf的用法和printf一致,不过它不是输出到浏览器,而是返回一个字符串。
2.数据类型和变量
PHP是弱类型的,一个变量不需要预先声明,也不需要指定类型。PHP中变量是$加上变量名,PHP的变量是区分大小写的。 例如上例中的 $my='my'。
PHP支持的变量类型包括:布尔型,整型,浮点型,字符串,数组和对象。前四种很常用,也和其他语言类似,不多做介绍。数组和对象后文具体介绍。
PHP中有函数来检测 对象的类型,它们是 getttype。gettype返回一个string,它的值可以是array,boolean,double,integer,object,resource,string 和 unknow type. PHP也支持显式的类型转换,语法和C类似。
转换操作符 转换为
(array) 数组
(bool) (boolean) 布尔型
(int) (integer) 整数
(object) 对象
(float),(double),(real) 浮点数
(string) 字符串
例如:
<?php 
$str ='a string'; 
$num=15; 
$numstr='123.3'; 
echo gettype($str),'<br/>'; 
echo gettype($num),'<br/>'; 
echo gettype($numstr),'<br/>'; 
$numstr=(float)$numstr; 
echo gettype($numstr); 
?>

输出结果为:

string
integer
string
double

还有函数可以用来判断一个变量是不是某种类型,例如 is_array(),is_bool()等等,用法都类似。

3. 函数和变量作用域
PHP声明函数的方法很简单,形式如下:

function functionName(parameters){ 
function body 
}

不需要指定返回类型,括号中也不需要指定变量类型,只要有变量名就可以。例如:
<?php 
function taxedPrice($price,$taxrate){ 
return $price*(1+$taxrate); 
} 
echo taxedPrice(100, 0.03); 
?>

默认情况下,PHP是按值传递参数的,在函数内改变参数的值并不会改变函数外变量的值,但是PHP也支持按引用传递,语法和C一致,&$paramName,例如,下面一个经典的例子:
<?php 
function swap1($x,$y){ 
$t=$x;$x=$y;$y=$t; 
} 
function swap2(&$x,&$y){ 
$t=$x;$x=$y;$y=$t; 
} 
$a=3;$b=5; 
swap1($a,$b); 
printf("a is %d, b is %d <br/>",$a,$b); 
swap2($a,$b); 
printf("a is %d, b is %d <br/>",$a,$b); 
?>

输出结果:

a is 3, b is 5
a is 5, b is 3

PHP的函数还支持参数的默认值,语法和C也是一样的。例如:

<?php 
function taxedPrice($price,$taxrate=0.03){ 
return $price*(1+$taxrate); 
} 
echo taxedPrice(100); 
?>

下面介绍变量的作用域。PHP的变量作用域和C很类似,有局部变量,函数参数,全局变量,静态变量4种。局部变量就是在函数内声明的变量,函数参数是在函数首部声明的变量;不在函数中声明的变量是全局变量,全局变量可以在任何地方访问到,但是和C不同的是,如果在函数中要修改全局变量的值需要用GLOBAL关键字显式指定它是全局变量,否则PHP就会声明一个同名的局部变量并且覆盖它。例如:
<?php 
$taxrate=0.03; //global 
function change1() { 
$taxrate+=1; 
} 
function change2() { 
GLOBAL $taxrate; 
$taxrate+=1; 
} 
change1(); 
echo $taxrate,'<br/>'; 
change2(); 
echo $taxrate,'<br/>'; 
?>

输出的结果是:

0.03

1.03

PHP还有一种超级全局变量。超级全局变量是由PHP系统预定义的,主要用来访问与环境有关的信息,例如当前用户会话,用户操作环境和本地环境等。超级全局变量是一个数组,例如$_SERVER中存储了服务器相关的信息。$_GET,$_POST,$_FILES,$_COOKIE中分别存储了客户端采用get提交,和post的提交的信息,上传的文件,cookie信息等。这些变量的使用都很简单,需要什么信息只需要查找

4 变量的变量
和C一类的静态语言不同,PHP的变量名本身可以是一个变量,这对于需要动态生成很多变量的时候是很便利的。例如:

<?php 
$r="hello"; 
$$r="I am hello"; 
echo $hello; 
?>

输出结果为: I am hello

5.流程控制语句
主要包括,if else, while,for,do while,switch. 这些和C语言都很像,基本是一致的。不多做介绍。有些不同,PHP的 elseif是一个关键字,是连在一起的,而C语言是else if。

PHP 相关文章推荐
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
Jul 01 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
div li的多行多列 无刷新分页示例代码
Oct 16 PHP
PHP 7的一些引人注目的新特性简单介绍
Nov 08 PHP
Laravel中Trait的用法实例详解
Mar 16 PHP
php实现按天数、星期、月份查询的搜索框
May 02 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 PHP
php常用字符函数实例小结
Dec 29 PHP
php 从一个数组中随机的取出若干个不同的数实例
Dec 31 PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 PHP
PHP面向对象程序设计之对象的遍历操作示例
Jun 12 PHP
php下连接mssql2005的代码
Jan 17 #PHP
Php Image Resize图片大小调整的函数代码
Jan 17 #PHP
php生成随机密码的几种方法
Jan 17 #PHP
PHP校验ISBN码的函数代码
Jan 17 #PHP
PHP中用正则表达式清除字符串的空白
Jan 17 #PHP
php开发环境配置记录
Jan 14 #PHP
PHP文件读写操作之文件写入代码
Jan 13 #PHP
You might like
php获得当前的脚本网址
2007/12/10 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
Python中的localtime()方法使用详解
2015/05/22 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
python中logging包的使用总结
2018/02/28 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
python循环定时中断执行某一段程序的实例
2019/06/29 Python
在django view中给form传入参数的例子
2019/07/19 Python
Python内存映射文件读写方式
2020/04/24 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
《走一步再走一步》教学反思
2014/02/15 职场文书
学生鉴定评语大全
2014/05/05 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
刑事起诉书范文
2015/05/19 职场文书
音乐剧猫观后感
2015/06/04 职场文书
教师师德工作总结2015
2015/07/22 职场文书