1.   要输出大段文本时,跳出PHP解析模式通常比将文本通过echo或print输出更有效率(手册

2.   note :为了代码的发行及一致性,确保不要使用短标记,短标记仅通过php.ini配置文件中的指令short_open_tag打开后才可能使用,或者在PHP编译时加入了--enable-short-tag选项,php5.4后,短格式的echo标记<?=总会被识别并且合法,不管short_open_tag的设置是什么。(手册

3.  当转换为boolean时,以下的值被认为是FALSE:(手册

  • 布尔值FALSE本身
  • 整形值0
  • 浮点型值0.0
  • 空字符串以及字符串"0"
  • 不包括任何元素的数组
  • 不包括任何成员变量的对象
  • 特殊类型NULL
  • 从空标记生成的simpleXML对象

其他所有值都被认为是TURE(包括任何资源)

4.  如果给定的一个数超出了integer的范围,将会被解释为float.同样如果执行的运算结果超出了integer范围,也会返回float。通常最大值大约二十亿(32位符号),9E18(64位符号)。

php没有整除运算符,1/2产生float0.5。值可以舍弃小数部分强制转换为integer,或者使用round()函数更好的四舍五入。

从布尔值转换,FALSE讲产生出0,TRUE讲产生出1.(手册

5.  永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。

某些数学运算产生一个由常量NAN所代表的结果。此结果代表一个在浮点预算中未定义或不可表述的值,任何拿此值与它的值比较(包括自身),结果都是FALSE,应使用is_nan()来检查。(手册

**6.  不像双引号和heredoc语法结构,在单引号字符串中的变量和特殊符号的转义序列将不会被替换。更多字符串的用法详解见(手册

\n 换行(ASCII 字符集中的 LF 或 0x0A (10))
\r 回车(ASCII 字符集中的 CR 或 0x0D (13))
\t 水平制表符(ASCII 字符集中的 HT 或 0x09 (9))
\v 垂直制表符(ASCII 字符集中的 VT 或 0x0B (11))(自 PHP 5.2.5 起)
\e Escape(ASCII 字符集中的 ESC 或 0x1B (27))(自 PHP 5.4.0 起)
\f 换页(ASCII 字符集中的 FF 或 0x0C (12))(自 PHP 5.2.5 起)
\\ 反斜线
\$ 美元标记
\" 双引号
\[0-7]{1,3} 符合该正则表达式序列的是一个以八进制方式来表达的字符
\x[0-9A-Fa-f]{1,2} 符合该正则表达式序列的是一个以十六进制方式来表达的字符

7.  php中的数组实际上是一个有序的映射,映射是一种把values关联到keys的类型,由于数组元素的值也可以是一个数组,所以树形结构和多维数组也是允许的。(守则

应该始终在用字符串表示的数组索引上加引号,但并不是总是给键名加上引号,用不着给键名为常量或者变量的加上引号,否则PHP不能解析他们。

8.  PHP中并不需要初始化变量,但是对变量进行初始化是个好习惯,未初始化的变量具有其类型的默认值-布尔类型的变量默认值是FALSE,整形和浮点型变量的默认值是零,字符串变量的默认值是空字符串以及数组变量的默认值是空数组。依赖未初始化变量的默认值在某些情况下会有问题,例如把一个文件包含到另一个之中时碰到相同的变量名。另外吧register_globals打开时一个主要的安全隐患。使用未初始化的变量会发出E_NOTICE错误,但是向一个为初始化的数组附加单元时不会。isset()语言结构可以用来检测一个变量是否已被初始化。(守则

9.  (手册

<?php
$a = 1;/*global scope */ function Test()
{
echo $a; /* reference to local scope variable */
} Test();
?>

这个脚本不会有任何输出,因为echo语句引用了一个局部版本的变量$a,而且在这个范围内,他并没有被赋值。

php中全局变量在函数中使用时必须声明为global,或者使用特殊的PHP自定义$GLOBALSS数组。

静态变量尽在局部函数与中存在,但当程序执行离开此作用域时,其值并不丢失。(静态变量不能用表达式的结果对其赋值,否则会导致解析错误,静态声明实在编译时解析的。)

在Zend引擎1代,它驱动了php4,对于变量的static和global定义是以引用的方式实现的,例如,在一个函数域内部用global语句导入一个真正的全局变量实际上是建立了一个到全局变量的引用。

10.  可变变量用于数组,必须解决一个模棱两可的问题,例如写下$$[1]时,解析器需要知道是想要$a[1]作为一个变量呢,还是想要$$a作为一个变量并取出该变量中索引为[1]的值,解决此方法的语法是,对第一种情况用${$a[1]},对第二种情况用${$a}[1]。

注意,在php的函数和类的方法中,超全局变量是不能用作可变变量。$this变量也是一个特使变量,不能被动态引用。(手册

11.  PHP透明的支持HTTP cookies.Cookies是一种在远端浏览器端储存数据并能追踪或识别再次访问的用户机制,可以用setcookie()函数设定cookies.Cookies是HTTP信息头中的一部分,因此SetCookie函数必须在向浏览器发送任何输出之前调用。对于Header()函数也有同样的限制。Cookie数据会在相应的cookie数据组中可用,更多细节详见(手册

注意在浏览器中的一个cookie会替换掉上一个同名的cookie,除非路径或者域不同。因此对于购物车程序可以保留一个计数器并一起传递。

<?php
if(isset($_COOKIE['count'])){
$count = $_COOKIE['count'] + 1;
}else{
$count = 1;
}
setcookie('count',$count,time()+3600);
setcookie("Cart[$count]",$item,time()+3600);

12.  和superglobals一样,常量的范围是全局的,不用管作用域就可以在脚本的任何地方访问常量。(手册

可以用define()函数来定义常量,在php5.30以后,可以使用const关键字在类定义之外定义常量。一个常量一旦被定义,就不能改变或者取消定义。

注意:和使用define()来定义常量相反的是,使用const关键字定义常量必须处于最顶端的作用区域,因此用此方法是在编译时定义的。这就意味着不能再函数内,循环内以及if语句内用const来定义常量。

几个 PHP 的“魔术常量”
名称 说明
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) =
__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。
__TRAIT__ Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

13.  出发运算总是返回浮点数,只有在下列情况例外,两个操作数都是整数并且正好能整除,这是它返回一个整数。

取模运算的操作数在运算之前都会被转换成整数(除去小数部分)

取模运算符%的结果和被除数的符号相同,即$a%$b的结果和$a的符号相同。

注意:赋值运算将原变量的值拷贝到新变量中(传值赋值),所以改变其中一个并不影响另一个。但是有个例外就是碰到对象object时,在php5中是以引用赋值的,除非明确使用了clone关键字来拷贝。

PHP5起,new运算符自动返回一个引用,因此在对new的结果进行引用赋值在php5.3以及以后版本中会发出一条E_DEPRECATED的错误信息。(手册

14.  php支持一个错误控制运算符:@。当将其放置在一个php表达式之前,该表达式可能产生的任何错误信息都会被忽略掉。如果用set_error_handler()设定了自定义的错误处理函数,仍然会被调用,但是此错误处理函数可以调用error_reporting(),而该函数在出错语句前有@时将返回0(手册

15.  +运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的建名,则只用左边数组中的,右边的被忽略。(手册

  

读php手册一点点心得(1)的更多相关文章

  1. python学习的一点点心得

    好久没发博客了,不解释....接下来写一点自己最近学习python的一点心得. 想要学习python的初衷,是看<软件测试技术大全>一书时,了解到像perl.python.ruby等脚本类 ...

  2. 读 Working with forms 一些心得

    Working with forms About this document This document provides an introduction to Django’s form handl ...

  3. 使用eclipse svn塔建(配置)时的一点点心得

    有没有人遇到下面这种情况??自己创建的SVN如下: 但网上别人搭建好的是这样子的: 就是为什么我的只有个主文件,而没有src.webroot.meta-inf.web-inf等子文件呢?? 这是我找了 ...

  4. Vuex 实际使用中的一点心得 —— 一刷新就没了

    问题 在开发中,有一些全局数据,比如用户数据,系统数据等.这些数据很多组件中都会使用,我们当然可以每次使用的时候都去请求,但是出于程序员的"洁癖"."抠"等等优 ...

  5. 4412 GPIO读 和 ioremap控制GPIO寄存器

    一.配置GPIO读 在视频14的基础上做 1.利用拨码开关来实现GPIO输入 所以AP_SLEEP对应GPC0_3,然后在drivers/gpio/gpio-exynos4.c中对应EXYNOS4_G ...

  6. Flickr 网站架构分析

    Flickr 网站架构分析 Flickr.com 是网上最受欢迎的照片共享网站之一,还记得那位给Windows Vista拍摄壁纸的Hamad Darwish吗?他就是将照片上传到Flickr,后而被 ...

  7. jqgrid使用sql row_number进行分页

    背景 系统中使用了jqgrid的展示,现在要处理10w+的数据量 现状 使用了全查询的,查询到了10w+的数据放到了datatable中,每次页面刷新需要9秒多,并且传递给另一个dll来处理一些事情. ...

  8. 【原创】MIPS·Verilog·FPGA

    时至今日,终于将全部的计划55条MIPS指令在FPGA上全部验证完毕,通过这近一个月的不断的修改调试.修改调试,我对整个流程对MIPS有了深刻的体会和认识.借着刚刚现阶段任务的兴奋和短暂的空闲时间,将 ...

  9. 一步一步教你玩转.NET Framework的配置文件app.config

    转自https://www.cnblogs.com/tonnie/archive/2010/12/17/appconfig.html 在一般的项目中,为了使你的代码更加灵活,更方便调整,减少不必要的h ...

随机推荐

  1. Unity有限状态机编写

    有限状态机FSM 是对行为逻辑的抽象. 在整个FSM架构中 首先有一个状态基类stateObject 里面有三个方法,分别是状态前.状态中.状态后. 所有具体行为类都要继承这个基类,在这三个方法中具体 ...

  2. iPhone 和Android应用,特殊的链接:打电话,短信,email;

    http://ice-k.iteye.com/blog/1426526 下面的这篇文章主要是说,网页中的链接如何写,可以激活电话的功能. 例如,页面中展示的是一个电话号码,当用户在手机浏览器里面点击这 ...

  3. POJ 2653 Pick-up sticks(线段相交)

    题意:给定n个木棍依次放下,要求最终判断没被覆盖的木棍是哪些. 思路:快速排斥以及跨立实验可以判断线段相交. #include<algorithm> #include<cstdio& ...

  4. Keil C动态内存管理机制分析及改进

    Keil C是常用的嵌入式系统编程工具,它通过init_mempool.mallloe.free等函数,提供了动态存储管理等功能.本文通过对init_mempool.mallloe和free这3个Ke ...

  5. PowerShell 中进行列表展示的排序-倒序

    Order Your Output by Easily Sorting Objects in PowerShell ★★★★★ ★★★★ ★★★ ★★ ★ January 10, 2012 by Th ...

  6. java classpath import package 机制 @Java的ClassPath, Package和Jar

    java classpath import package 机制   從一個簡單的例子談談package與import機制 基本原則:為什麼需要將Java文件和類文件切實安置到其所歸屬之Package ...

  7. ADO.Net对Oracle数据库的操作【转载】

    一 ADO.Net简介 访问数据库的技术有许多,常见的有一下几种:开放数据库互联(ODBC).数据访问对象(DAO).远程数据对象 (RDO). ActiveX数据对象(ADO).我们今天主要要学习A ...

  8. Linux驱动开发相关

    一般用printk 查看/etc/sysconf文件,看看内核调试信息放到了哪里 打印的消息一般放在/var/log/messages文件里面. 如果你是在X Windows下的XTerm中insmo ...

  9. 数据结构之顺序表,c#实现

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...

  10. bzoj1615 [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机

    Description Farmer John新买的干草打包机的内部结构大概算世界上最混乱的了,它不象普通的机器一样有明确的内部传动装置,而是,N (2 <= N <= 1050)个齿轮互 ...