《PHP跟Mysql web 开发》读书笔记(一)php快速入门

《PHP和Mysql web 开发》读书笔记(一)php快速入门

本系列主要结合《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脚本的执行