PHP基础笔记(01)
2016-06-01 14:44
483 查看
PHP基础笔记(01)
PHP笔记,主要记录PHP与C++、C#之类的语言的一些差异,以及一些有价值的细节。类型
PHP是一种弱类型(动态类型)解释型语言,有自己的内存管理机制。大部分基本数据类型与其他语言较为类似。
PHP使用C语言开发,因此integer整型的长度与机器字长相关的。
问题:PHP赋值是基于引用的还是基于值复制?
echo PHP_INT_SIZE; //整数的字节长度,32位环境下为4 echo PHP_INT_MAX; //整型的最大值,32位环境下为2147483647
字符串
字符串分为'abc'和
"abc"两种
两者都支持诸如
\n这样的转义字符,主要区别在于后者支持变量替换为值(即格式化字符串)
$name='Wang'; $str='My name is $name'; echo($str); //My name is $name $str="My name is $name"; echo($str); //My name is Wang
字符串使用
.即英文句号连接
echo "PHP".5; //显示PHP5
字符串还有一种跨行的语法类型,估计是用来输出网页模板之类的长篇幅内容。
字符串以
<<<标识符和换行开头,以
标识符;结尾。这样类似双引号字符串,支持变量替换为值。
echo <<<STR 文本1 文本2 文本3 STR;
如果不需要变量替换为值,可以为
标识符加上单引号,即以
<<<'标识符'和换行开头,以
标识符;结尾 ,这样类似单引号字符串。
NULL空值类型
PHP有空值类型,即NULL。如$var=NULL。
资源类型(resource)
资源类型用来指向PHP外部的资源,如数据库、文件、图像等,通常由调用相应的函数建立。如
$sqlconnect=mysql_connect();,资源也是自动管理的。
类型转换
$var=1; echo $var; //返回1 echo is_integer($var); //返回TRUE $var_bool=(bool)$var; //$var_bool是bool类型,值为TRUE echo $var_bool; //返回TRUE settype($var,bool); //$var被转换成bool类型,值为TRUE echo $var; //返回TRUE intvar($var); //将$var转换成integer类型,值为1 echo $var; //返回1
变量
PHP的变量名显式表示,以$开头,如$var
变量名字母或_开头,支持字母、_和数字
PHP的关键字不区分大小写,而变量区分大小写
变量以引用方式保存值,赋值默认基于值的复制
基于引用赋值
基于引用赋值的语法与C++类似,行为和特性更接近C#$var1=123; $var2=$var1; $var2=321; echo $var1; //123 $var2=&$var1; $var2=321; echo $var1; //321 $var2=null; echo $var1; //123
可变变量
这是一个很有趣的特性,可以用变量的值来作为变量名。$var="Happy"; $$var="Birthday"; //这里实际上声明了一个$Happy变量,值为"Birthday" echo $var; //Happy echo $$var; //Birthday echo $Happy; //Birthday
这个所谓的可变变量可以部分替代C/C++中指针的功能,同时更强大,也许在数据库读写方面很有用。
问题:性能如何?是否有C#中反射那样较为明显的性能损失?
预定义常数
PHP内置了一些预定义常数,如下:预定义常数 | 说明 |
---|---|
__LINE__ | 文件行数 |
__FILE__ | 文件完整路径,含文件名 |
__DIR__ | 文件完整目录 |
__FUCTION__ | 函数名 |
__CLASS__ | 类名 |
__METHOD__ | 方法名 |
__NAMESPACE__ | 命名空间的名称 |
echo __FILE__; //显示类似C:\wwwroot\index.php的内容
忽略警告信息@
在表达式比如函数前加上@,就会忽略表达式产生的警告信息。$a=@file('c:\abc.php');
执行shell命令
使用反引号字符串,可以执行命令行命令$var=`dir`; echo "<pre>$var</pre>";
该操作比较危
4000
险,而且有跨平台兼容性问题,应该慎用。
var_dump()函数
该函数显示变量的详细信息,包括类型,结构,值等。$var="abc"; var_dump($var);
由于PHP是弱类型语言,在复杂对象中对变量赋予错误类型的值,经常会导致莫名其妙的错误。var_dump()函数对于检查类似错误比较有帮助。
数组
PHP的数组非常灵活,可以实现C++/C#许多容器的功能。PHP的数组属于关联数组,不同与类C语言的向量数组
数组动态分配,且长度可变
数组内可以混合各种类型的数据,甚至是数组
数组内对象可以命名,行为类似于键值对容器
数组有一个内部指针,结合相关函数用于遍历内部元素
针对数组的foreach循环
数组的键,支持数字或者简单字符串如
'str',默认为0开始的数字
$arr=array('a','b','c'); //行为类似普通数组 echo $arr[0]; //显示a
数组也可以直接赋值并指定键,键可以不连续
$arr[1]='a'; //并没有从0开始,也不需要预先分配数组 $arr[3]='c'; //也并不连续
键也可以为简单字符串,键值对的表示形式为
'key'=>'value'
$arr['apple']='red'; //行为类似键值对容器 $arr['banana']='yellow'; echo $arr['banana']; //yellow $arr=null; $arr=array('apple'=>'red','banana'=>'yellow','grape'=>'purple'); echo $arr['grape']; //purple $arr[1]='empty'; //键可以混合使用数字和字符串,虽然可能没用
以下为数组常用操作函数(省略参数)
类型 | 函数 |
---|---|
基本操作 | is_arr、count、sizeof、unset |
元素遍历(并返回值) | current、pos、next、prev、end、reset、array_walk、each、list |
集合操作 | array_combine、array_diff、array_fill、array_keys、array_values |
数组操作 | array_reverse、array_flip、array_merge、array_pad、array_splice、array_unique、range |
数据查询 | array_search、array_slice、array_sum |
队列、堆栈 | array_push、array_pop、array_unshift、array_shift、 |
元素排序 | asort、arsort、ksort、krsort、sort、rsort、usort、uasort、uksort、shuffle |
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- rem : web app适配的秘密武器
- jquery高级应用之Deferred对象
- php7 读取php.ini[4]
- AS3自写类整理笔记 ClassLoader类第1/2页
- AS3自写类整理笔记 Dot类第1/2页
- DB2新手使用的一些小笔记:新建实例、数据库路径不存在、客户端连接 .
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站