• http://blog.csdn.net/zhanglvmeng/article/details/11928469


    本系列主要结合《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.
         单引号:定义一个字符串的最简单的方法是用单引号把它包围起来(字符 ')。

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

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

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

       Heredoc 结构:

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

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

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

    如果不遵守该规则导致结束标识不“干净”,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脚本的执行

  • 相关阅读:
    WCF系列(一)BasicHttpBinding 和 WsHttpBinding 的不同点
    SQL Server中的事务与锁
    领域驱动设计之领域模型
    http请求到响应经历的阶段
    vs调试
    c# 基本值类型及其默认值
    ASP.NET中JSONP的两种实现以及其他跨域解决方案的简单实现
    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
    最完整的数据倾斜解决方案(spark)
    Spark性能调优
  • 原文地址:https://www.cnblogs.com/riasky/p/3360815.html
Copyright © 2020-2023  润新知