本系列主要结合《PHP和MYSQL WEB开发 第四版》,在阅读中提出自己认为比较重要的一些问题,以加深对知识的了解程度。

1、简短、中等以及冗长风格的表单变量

$name;                             //简短风格,不安全
$_POST['name'],$_GET['name'],$_REQUEST['name'], //中等风格
$HTTP_POST_VARS['name']                  //冗长风格,已经抛弃。

2、php字符串中的单引号、双引号、heredoc以及nowdoc

(该部分内容主要参考http://php.net/manual/zh/language.types.string.php

一个字符串可以用 4 种方式表达: 单引号、双引号、heredoc、nowdoc.
     单引号:定义一个字符串的最简单的方法是用单引号把它包围起来(字符 ')。

要表达一个单引号自身,需在它的前面加个反斜线(\)来转义。要表达一个反斜线自身,则用两个反斜线(\\)。其它任何方式的反斜线都会被当成反斜线本身:也就是说如果想使用其它转义序列例如 \r 或者 \n,并不代表任何特殊含义,就单纯是这两个字符本身。

Note: 在单引号字符串中的变量和特殊字符的转义序列将不会被替换。

双引号:如果字符串是包围在双引号(")中, PHP 将对一些特殊的字符进行解析。用双引号定义的字符串最重要的特征是变量会被解析。

Heredoc 结构:

 在该运算符之后要提供一个标识符,然后换行。接下来是字符串string本身,最后要用前面定义的标识符作为结束标志。

结束时所引用的标识符必须在该行的第一列,而且,标识符的命名也要像其它标签一样遵守 PHP 的规则:只能包含字母、数字和下划线,并且必须以字母和下划线作为开头。

要注意的是结束标识符这行除了可能有一个分号(;)外,绝对不能包含其它字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或制表符。更重要的是结束标识符的前面必须是个被本地操作系统认可的换行,比如在 UNIX 和 Mac OS X 系统中是 \n,而结束定界符(可能其后有个分号)之后也必须紧跟一个换行。

如果不遵守该规则导致结束标识不“干净”,PHP 将认为它不是结束标识符而继续寻找。如果在文件结束前也没有找到一个正确的结束标识符,PHP 将会在最后一行产生一个解析错误

<?php
$name = 'MyName';
echo <<<EOT
My name is "$name".
EOT;//注意结束标识符的前面必须是个被本地操作系统认可的换行。
?>

Nowdoc 结构:就象 heredoc 结构类似于双引号字符串,Nowdoc 结构是类似于单引号字符串的。Nowdoc 结构很象 heredoc 结构,但是 nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。

3、php跨平台问题

PHP跨平台,因为是解释执行的,在各类平台下都可以执行,分别由相应平台的PHP软件(解释器)来执行你编写的PHP程序。(摘自百度)
php的解释器有多个操作系统的多个版本,多的偶都叫不出来名字,凡是有解释器的操作系统你写的php程序就可以运行,不论你是在windows还是linux下写的

4、php数据类型介绍

(该部分主要参考http://blog.csdn.net/jt521xlg/article/details/7528592

其实该部分一个主要的疑问点在此:php是跨平台的语言,那么其integer型的数据长度会依赖于机器内存?

在参考文献中,罗列了以下一些数据类型:

类型名称  类型表示  取值
 bool  布尔型   true,false
 integer  整型 -2147483647-2147483648  (2^31-1)
 string  字符串型  字符串长度取决于机器内存
 float  浮点型  最大值1.8e308
 object  对象 通过new实例化 $obj=new person(); 
 array  数组类型  $arr=array(1,2,3,4,5,6);//一维数组
 resourse    
 null  空值  null

参考文献中关于整型有这么一句话:“整型的范围-2147483647--2147483647 ,如果超过该值会自动转换成float型。我们可以使用echo PHP_INT_SZIE  输出integer的字长,和机器有关。echo PHP_INT_MAX 输出integer的最大值”。通过这句话,并且结合问题3,我们可以这样理解,其实整型的范围还是跟机器有关的,并且这种思想跟跨平台是不冲突的,因为php的跨平台是靠多个解释器来实现的。(如该句话中给出的应该是-2147483647--2147483647,只能说明当前机器为32位的机器,当超过最大值2147483647,只是自动转换成float)。

5、php常量跟变量的区别、传值与传地址的区别

有关变量的知识,可以参见我之前的文章:http://blog.csdn.net/zhanglvmeng/article/details/11920323

6、比较操作符:等价操作符== 与恒等操作符===

有关这一部分的知识,可以参见我之前的文章:http://blog.csdn.net/zhanglvmeng/article/details/11927587

7、错误抑制操作符(@)、执行操作符(` `)、类型操作符(instanceof)

有关操作符的问题可以参见我之前的文章:http://blog.csdn.net/zhanglvmeng/article/details/11921033。其中还讲述了错误抑制操作符执行效率慢的原因
8、PHP中echo(),print(),print_r()的区别

echo ,print的区别在于echo 可以输出多个变量值,而print只有一个变量,做为一个字符串输出. 另一点区别在于echo 没有返回值,print有返回值1.print不能输出数组和对象。
具体信息可以参见我之前的博客:http://blog.csdn.net/zhanglvmeng/article/details/11950315

9、变量状态isset/unset/empty() 对比:

这是我之前转发的一篇文章,不错。http://blog.csdn.net/zhanglvmeng/article/details/11928469

empty() 和 isset() 虽然都是变量处理函数,它们都用来判断变量是否已经配置,它们却是有一定的区别:empty还会检测变量是否为空、为零。当一个变量值为0,empty() 认为这个变量同等于空,即相当于没有设置。 

当要 判断一个变量是否已经声明的时候 可以使用 isset 函数 【注意:isset是看是否设置了,设置了为true,未设置为false,不要搞反了。】
当要 判断一个变量是否已经赋予数据且不为空 可以用 empty 函数 
当要 判断 一个变量 存在且不为空 先isset 函数 再用 empty 函数

10、  Break:跳出循环,执行循环之后的第一句  continue :跳出本次循环,执行下一次循环    exit:结束整个PHP脚本的执行

http://blog.csdn.net/zhanglvmeng/article/details/11928469的更多相关文章

  1. http://blog.csdn.net/java2000_wl/article/details/8627874

    http://blog.csdn.net/java2000_wl/article/details/8627874

  2. android 蓝牙 http://blog.csdn.net/u012843100/article/details/52384219

    http://blog.csdn.net/u012843100/article/details/52384219

  3. http://blog.csdn.net/krislight/article/details/9391455

    http://blog.csdn.net/krislight/article/details/9391455

  4. http://blog.csdn.net/shawnkong/article/details/52045894

    http://blog.csdn.net/shawnkong/article/details/52045894

  5. 使用C++扩展Python的功能 转自:http://blog.csdn.net/magictong/article/details/8897568#comments

    使用C++扩展Python的功能 环境 VS2005Python2.5.4 Windows7(32位) 简介 长话短说,这里说的扩展Python功能与直接用其它语言写一个动态链接库,然后让Python ...

  6. http://blog.csdn.net/hitmediaman/article/details/6636402

    http://blog.csdn.net/hitmediaman/article/details/6636402

  7. http://blog.csdn.net/iamshaofa/article/details/7877785/

    http://blog.csdn.net/iamshaofa/article/details/7877785/

  8. http://blog.csdn.net/z69183787/article/details/37819831

    http://blog.csdn.net/z69183787/article/details/37819831

  9. http://blog.csdn.net/u010246789/article/details/52539576

    http://blog.csdn.net/u010246789/article/details/52539576

随机推荐

  1. Cannot convert '0000-00-00 00:00:00' to TIMESTAMP

    在url上添加参数 zeroDateTimeBehavior=convertToNull jdbc:mysql://localhost/myDatabase?zeroDateTimeBehavior= ...

  2. 关于jQuery的ajax的源码的dataType解读

    $.ajax其实底层还是用的XMLHttpRequest,对于加载数据的格式datatype有:xml.text.html.json.jsonp.script. 其中xml.text不需要处理,直接使 ...

  3. linode最新试用(购买)流程

    最新linode官网www.linode.com可以免费试用7天,但是需要你的身份认证 第一步:注册一个linode账号email填写国内的163.126.qq邮箱是不能认证的,这里可以填写gmail ...

  4. error: undefined reference to `XXX::XXX(type1, ypte2)

    moc_fortunethread.cpp:100: error: undefined reference to `FortuneThread::GetToParentThread(QString, ...

  5. C++ buffer缓冲区的秘密

    在搞数据库和C++进行连接的时候,遇到一个问题,就是如果前面用到了fflush(stdin)即清空缓冲区,就OK,如果不清空缓冲区就不能把记录加入到Mysql的数据库中, 但是即便如此,这个问题目前还 ...

  6. Java之线程的控制

    1. join线程: 在线程执行过程中,有时想让另一个线程先执行,比如将一大问题分割成许多小问题,给每一个小问题分配线程,但所有小问题处理完后再让主线程进一步操作.此时我们可以在主线程中调用其它线程的 ...

  7. display属性值

    display属性值:none 此元素不会被显示. block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会被显示为内联元素,元素前后没有换行符. inline-bl ...

  8. [Daily] 2014-4-22

    KEEP GOING Think more product when face difference Check value null when insert/remove/update/add ch ...

  9. 【Spring MVC系列】--(4)返回JSON

    [Spring MVC系列]--(4)返回JSON 摘要:本文主要介绍如何在控制器中将数据生成JSON格式并返回 1.导入包 (1)spring mvc 3.0不需要任何其他配置,添加一个jackso ...

  10. hdu 5591 ZYB's Game

    Problem Description ZYB played a game named NumberBomb with his classmates ,N] in mind,then players ...