读php手册一点点心得(1)

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 新增)。

  

时间: 2024-10-08 08:32:18

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

第五次作业《读构建之法的心得》

<读构建之法的体会> <构建之法>这本书是软件大大神邹欣的作品之一,这本书体现邹欣老师的情怀,很简洁的讲述了软件设计的各个阶段,描述了一个微软软件大神对软件的理解.构建之法对我帮助挺大的,通过构建之法这本书使我对软件的构建很清晰的了解,让我对软件设计更加的清晰的认识,增加了我对软件的认识的兴趣,好了,现在来讲述讲述里面的内容,第一张讲概论:软件等于程序加文档,软件工程是什么,第二章讲 个人技术和流程 单元测试,效能分析工具,个人开发流程第三章讲软件工程师的成长 个人能力的衡量与发展

快节奏的城市,我也可以悠然工作-谈对时间管理的一点点心得

在大城市里工作的童鞋们,是不是出现过正在进行某项工作时,突然又插进来另外一项工作,甚至有时候不只一项时,是不是很抓狂? 怎么办?主管交办,不能不办!但怎样办才好,才会最省时省力,确实值得我们去思考. 针对这个问题,有次在和领导聊天的时候,我专门请教过他,他的回答很坦诚:1,每个人很多时候都会在并行的做不只一项工作 2,几乎每个人都有拖延症的情况也包括他自己~.这个时候就需要时间管理了,合理有效的时间 管理,可以避免时间的浪费,可以在宝贵的时间内,处理好更多的事情.这里给大家推荐一种工作方法(番茄

读“硬件抽象层:HAL”的心得

1 HAL是建立在Linux驱动上的一套程序库,并不属于Linux内核,而是属于Linux内核层上的应用层.它的目的就是保护“私人财产”,避免应用程序直接访问Linux驱动. 2在Android系统中使用Linux驱动有两种方式.一种就是通过传统的方式直接与Linux交互,如直接读取设备文件中的数据.另外一种是Andrid特有的,就是通过HAL模块. 3 HAL模块本质上就是通过Linux共享库(.so)与Linux驱动交互,然后应用程序再访问Linux共享库. 4每一个HAL共享库指定一个ID

冒泡排序的一点点心得

在大一的C语言课程中学习了排序算法中的冒泡算法,自以为已经掌握.但随着寒假自学的进展,发现冒泡算法没有当时想象的那么简单. 初学时: 复杂度 :O(n*n) for(int i = 0;i<nums.length;i++) { for(int j = i+1;j<nums.length;j++) { if(nums[i] >nums[j]) { int temp = nums[j]; nums[j] = nums[i]; nums[i] = temp; }//升序 } }//排序 经过今

我这些年对游戏外挂辅助开发的一些心得和体会

今天闲来无事,游戏也上不了,就写点东西吧,很少在濮阳吧里发贴子,今天我也来点贡献吧,以下内容对于有些人来说,也许很有用,但对于一些不懂装懂的人来说呢,你不懂就不要乱拍砖,你可以保持沉默,大家都是有文化,有素质的人,对吧. 所谓游戏外挂,其实是一种游戏外辅程序,它可以协助玩家自动产生游戏动作.修改游戏网络数据包以及修改游戏内存数据等,以实现玩家用最少的时间和金钱去完成功力升级和过关斩将.虽然,现在对游戏外挂程序的“合法”身份众说纷纭,在这里我不想对此发表任何个人意见,让时间去说明一切吧. 好了,费

程序员必读书籍及导读指南(转)

原文:程序员必读书籍及导读指南 最近在网上看了一个非常好的帖子<程序员一生必读的书>(我的腾讯微博上有分享该贴子链接,有兴趣就点击进去看看吧),该贴的第一个张图片是一个雷达图, 这张图是由ThoughtWorks(全球软件设计与定制领域的领袖级企业)的资深人士提供的,它将程序员要读的书分为四个类别,每个类别又分为初级.进阶和高级读物,并用黄色三角形点出了强烈推荐阅读的书籍.四个类别包括: 编程实践(Coding Practice) 设计与架构(Design & Architecture

程序员必读书籍及导读指南

最近在网上看了一个非常好的帖子<程序员一生必读的书>(我的腾讯微博上有分享该贴子链接,有兴趣就点击进去看看吧),该贴的第一个张图片是一个雷达图, 这张图是由ThoughtWorks(全球软件设计与定制领域的领袖级企业)的资深人士提供的,它将程序员要读的书分为四个类别,每个类别又分为初级.进阶和高级读物,并用黄色三角形点出了强烈推荐阅读的书籍.四个类别包括: 编程实践(Coding Practice) 设计与架构(Design & Architecture) 方法学(Methodolog

jqgrid使用sql row_number进行分页

背景 系统中使用了jqgrid的展示,现在要处理10w+的数据量 现状 使用了全查询的,查询到了10w+的数据放到了datatable中,每次页面刷新需要9秒多,并且传递给另一个dll来处理一些事情.偶尔会出现StackOverFlow的异常问题,但是频率较大. 分析 现有的就有两个问题需要解决: 性能问题 StackOverFlow的异常问题 起始 性能问题经过调查,sql语句查询完成之后至少4秒钟左右,因为是全查询,所以把尽力的条件都做了,效果不明显. 然后考虑用sql server的row

投身移动开发必须知道的20件事

1.选择你的平台 选择什么样的平台取决于你想做什么以及你的用户是谁.这些平台的最顶层是web.如果你想出售你的应用程序,那么你可能想要将它放在应用商店.如果你需要使用相机或者其他设备的API,那么你可以使用本地方法,或者使用一些封装好了的框架比如AIR/PhoneGap/Titanium. 这里没有明确的答案,你选择什么样的平台取决于很多的事情,因此不妨回顾一下贴在墙上的那些话,也许它们会告诉你答案. 2.甭想快速暴富 很多人对比了当前的应用商店的热潮和19世纪40年代末的加利福尼亚淘金热,正如