【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

PHP基础笔记(01)

原创 2016年06月01日 14:44:34

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>";

该操作比较危险,而且有跨平台兼容性问题,应该慎用。

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
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

PHP基础教程-06 课后作业01

视频教程观看地址:http://study.163.com/course/courseMain.htm?courseId=1003927005 下载:http://pan.baidu.com/s...

PHP之语言基础01 By ACReaper

1.PHP中的变量是不需要声明类型的,由$标识变量,变量的命名规则也是字母或者下划线开头,接着任意字符或者下划线。 $PI = 3.14; $radius = 5; $cir = $PI * 2 * $radius; 2.PHP中的数组,其实PHP中的数组就是使用哈希表实现的,所以PHP中不管是以字符串作为索引还是数字其本质映射的结果也对应一个数字。 其次PHP中可以不写索引,例如$test[] = 1.$test[] = 2;等等。其默认的索引从零开始,后一个比前面一个的索引整数值

欢迎关注CSDN程序人生公众号

关注程序员生活,汇聚开发轶事。

maven学习笔记01(基础入门)

1. maven 安装 配置环境变量 M2_HOME :   D:\My_Sduty_2015\Maven\apache-maven-3.1.1 path :  %M2_HOME%\bin; 检查安装:在cmd下输入 mvn -v  可以查看maven版本,说明安装成功!     2. 初步认识 pom.xml 文件 <pre name

[cocos2d-x学习笔记][入门基础]Cocos2d-x网络编程01.在Mac平台部署Apache和PHP

由于PHP Apache环境在Mac OS上是⾃自带的,所以不需要另处下安装包,只需要简单配置⼀一下即可。 1、⾸首先打开终端输⼊入命令,:sudo vim /etc/apache2/httpd.c...

Maven入门实战笔记01-基础(1)

  Windows上安装Maven 1.JDK检查<
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)