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与XML的PDF文档生成技术
Oct 09 PHP
生成sessionid和随机密码的例子
Oct 09 PHP
PHP伪静态写法附代码
Jun 20 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
Jul 19 PHP
Yii结合CKEditor实现图片上传功能
Jun 13 PHP
cakephp打印sql语句的方法
Feb 13 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
Yii全局函数用法示例
Jan 22 PHP
php+redis消息队列实现抢购功能
Feb 08 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的网址
2006/11/25 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
php 函数中使用static的说明
2012/06/01 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
JS中超越现实的匿名函数用法实例分析
2019/06/21 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
Python交换变量
2008/09/06 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
python版本五子棋的实现代码
2018/12/11 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
新驾驶员个人自我评价
2014/01/03 职场文书
大学生实习感言
2014/01/16 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
个人委托书范本汇总
2014/10/01 职场文书
先进班组事迹材料
2014/12/25 职场文书
2015中学政教处工作总结
2015/07/22 职场文书
MySQL 常见存储引擎的优劣
2021/06/02 MySQL
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang