php代码之要点分析一

一.post与get请求方式的区别:

1.请求形式不同:get请求是将数据俯角在URL结尾发送给服务器,post方式是以单独的消息形式,在后台发送给服务器。

2.发送长度不同:get请求最大数据量为2k,post请求理论上无限制,可以在配置文件中设置其大小。

3.安全度:因为get方式数据是附加在url后发送给服务器,因此,get的安全性要低。

4.运用场景:get适用于数据简单,安全性要求不高的时候使用,否则,使用post。

二.常量的声明和使用:

define('PAI1', 3.1415)
const PAI2 = 3.1415;
echo PAI1, PAI2;

define('^_^', ‘笑脸’);
//此种形式不能用echo ^_^来输出此变量,用一个函数即可
echo constant('^_^');

三.变量的作用域:

个人认为php中的作用域有三种

1.外部作用域,是指在一个脚本内,函数体以外的范围,在此区域声明的变量,外部都可用,但在内部即函数内不能使用。

2.内部作用域,是指一个脚本内,函数体内的范围,在此区域声明的变量,内部可用,但在外部不可见。

3.超全局作用域,在任何脚本的任何地方都可以使用,如在a.php脚本的test函数内部或者函数外部都可用,b.php脚本内也同样适用。

如何使一个变量在外部声明内部可用或者内部声明外部也可用呢?--global关键

<span style="white-space:pre">	</span>$v1 = 'global v1';
        func1();
        function func1(){
            //echo $v1; //未定义
            global $v1;
            echo 'function inner vars v1 :', $v1;
        }
        echo '以下是在函数内部声明外部使用的<span style="font-family: Arial, Helvetica, sans-serif;">示例</span><br />';
        function func2(){
            global $v2; //注释后,在全局内输出$v2会出错
            $v2 = 'function inner v2';
        }
        func2();
        echo $v2;

四.操作符

%  操作符:计算结果的符号与第一个操作数符号一致

& 引用操作符:

<span style="white-space:pre">	</span>$v3 = 1;
        $v4 = &$v3;
        unset($v3); //unset后会把变量给销毁掉,不能访问$v3
        //echo $v3; //unset再次访问$v3会报错

and or 操作符:

与&& 和 ||功能相同,只是优先级比较低(比=还要低)

function func1(){
	return false;
}
$a = func1() or die('func1 执行返回值为假');
$a = func1() || die('func1 执行返回值为假');

五.echo 和 print区别

可以这么说,凡是有一个可以使用的地方,另一个也可以使用。但是,两者之间也还是一个非常重要的区别:

在 echo 函数中,可以同时输出多个字符串,而在 print 函数中则只可以同时输出一个字符串。同时,echo函数并不需要圆括号,所以echo函数更像是语句而不像是函数。

echo 和 print 都不是函数,而是语言结构,所以圆括号都不是必需的。他们的区别在于:

(1) echo可以输出多个字符串,像下面这样:

echo ‘a‘,‘b‘,‘c‘;

如果你非要加上圆括号,注意写成echo (‘a‘,‘b‘,‘c‘);是错误的,应该写成:

echo (‘a‘),(‘b‘),(‘c‘);

它没有像函数的行为,所以不能用于函数的上下文

(2) print只能输出一个字符串,它可以表现得像一个函数,比如你可以如下使用:

$ret = print ‘Hello World‘;

所有它能用在更复杂的表达式中。

另外,echo的效率相对比较快~

echo    命令和    print    命令    不同

使用时echo 可以输出多个用逗号分隔的变量,而print只能输出一个变量

echo    函数    和    print    函数    有区别。

echo()    无返回值,与echo    命令相同

print()    有返回值,成功,返1,false,返0.因此,print要比echo慢一些,但可以应用到更复杂的表达式中。

六.isset 和 empty区别

isset函数在开发中使用较多,判断该变量是否存在或者是否开辟了内存。

empty函数不仅仅是判断值是否是为空,而且当次变量未定义,即未开辟内存时,返回false,也就是说empty函数需要在isset为真的前提下,不能为空。

七.switch可以支持整形,浮点型,字符串,也可以支持数组,布尔类型,允许没有default

<span style="white-space:pre">	</span>//$bol = true;
        //$bol = false;
        $bol = [1,   2, 3];
        switch($bol){
            case 0:
                echo '0<br />';
                break;
            case 10:
                echo '10<br />';
                break;
            case -1:
                echo '-1<br />';
                break;
            case [1,2,3]: //数组
                echo 'empty array<br />';
                break;
            case 0:
                echo '0<br />';
                break;
        }
//当为bool类型时,true在case数值为真时输出,false在case后数值为假时输出,可以运行代码,可以下
时间: 2024-12-28 01:54:36

php代码之要点分析一的相关文章

[大数据性能调优] 第一章:性能调优的本质、Spark资源使用原理和调优要点分析

本課主題 大数据性能调优的本质 Spark 性能调优要点分析 Spark 资源使用原理流程 Spark 资源调优最佳实战 Spark 更高性能的算子 引言 我们谈大数据性能调优,到底在谈什么,它的本质是什么,以及 Spark 在性能调优部份的要点,这两点让直式进入性能调优都是一个至关重要的问题,它的本质限制了我们调优到底要达到一个什么样的目标或者说我们是从什么本源上进行调优.希望这篇文章能为读者带出以下的启发: 了解大数据性能调优的本质 了解 Spark 性能调优要点分析 了解 Spark 在资

CVE-2017-7269—IIS 6.0 WebDAV远程代码执行漏洞分析

漏洞描述: 3月27日,在Windows 2003 R2上使用IIS 6.0 爆出了0Day漏洞(CVE-2017-7269),漏洞利用PoC开始流传,但糟糕的是这产品已经停止更新了.网上流传的poc下载链接如下. github地址:https://github.com/edwardz246003/IIS_exploit 结合上面的POC,我们对漏洞的成因及利用过程进行了详细的分析.在分析过程中,对poc的exploit利用技巧感到惊叹,多次使用同一个漏洞函数触发,而同一个漏洞同一段漏洞利用代码

MDU某产品OMCI模块代码质量现状分析

说明 本文参考MDU系列某产品OMCI模块现有代码,提取若干实例以说明目前的代码质量. 本文旨在就事论事,而非否定前人(没有前人的努力也难有后人的进步).希望以史为鉴,不破不立,最终产出高质量的代码. 一  质量现状 不考虑业务实现,现有的OMCI模块代码质量不甚理想.无论是理解上手.修改扩展和测试排障,可以用举步维艰形容.尤其是二层通道计算相关代码,堪比令史前动物无法自拔的"焦油坑". 本节将不考虑流程设计,仅就函数粒度列举目前存在的较为突出的代码质量问题. 1.1 巨型函数 通过S

高级C代码的汇编分析

在windows上,常用的函数调用方式有: Pascal方式,WINAPI(_stdcall)方式 和C方式(_cdecl) _cdecl调用规则: 1,参数从右到左入堆栈 2,在函数返回后,调用者要负责清除堆栈 所以这种调用常会生成较大的可执行文件. _stdcall又称为WINAPI调用方式,规则: 1,参数从右向左入堆栈 2,被调用的函数在返回前自行清理堆栈 所以这种调用会生成比cdecl小的代码 Pascal调用方式,主要用在WIN16函数库中,现在基本不用 规则: 1,参数从左向右入堆

【JS 设计模式 】用组合模式来实现树形导航--代码结构思路分析(一)

树导航效果图: 组合模式的描述: 将对象组合成树形结构以表示"部分-整体"的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性. 我们把部分用Leaf表示, 把整体用Composite表示.组合模式是有一定规律的,在实现树导航的情况下,Composite需要包含一个以上Leaf,也可以包含一个以上Leaf和一个以Composite,为什么说要包含一个以上的,如果Composite不包含任何子child的话那么它就是Leaf,Leaf表示是最后一层结节. 树形导航代码片段:

【JS 设计模式 】用组合模式来实现树形导航--JS代码结构思路分析(二)

[JS 设计模式 ]用组合模式来实现树形导航--代码结构思路分析(一) 根据上一节中的HTML代码结构我们通过JS来渲染HTML代码,我们先提供一下JS的代码片段,这代码代码不是一个完整的代码是经过简化的.通过JS代码来分析如何组装HTML的 Composite类型的代码: function TreeComposite(id, name, total, level, last) { var root = document.createDocumentFragment(); var panel =

打造smali代码库辅助分析

打造smali代码库辅助分析 在分析Android应用程序的时候,我们往往会插入代码重打包apk来辅助我们分析的工作 一个比较取巧的方法就是先用java写好代码以及相关的调用之后, 然后直接扣出代码 然后可以制作成各种代码模版,放在Android Killer中使用(代码模版管理器) Android Killer 自带3种代码模版 1. LoadLibrary const-string v0, "so name" invoke-static {v0}, Ljava/lang/Syste

[Android6.0][RK3399] 双屏异显代码实现流程分析(一)【转】

本文转载自:http://blog.csdn.net/dearsq/article/details/55049182 Platform: RK3399 OS: Android 6.0 Version: v2016.08 代码流程 代码详解 mipi dsi 接口信息初始化 fb相关信息读取 timing 参数初始化 mipi dsi controller 初始化 lcdc控制器注册 本文分为两部分. <[RK3399] 双屏异显代码实现流程分析(一)>为分析 RK video 部分标准的代码(

Netty中分隔符解码器代码示例与分析

[toc] Netty中分隔符解码器代码示例与分析 通过特别解码器的使用,可以解决Netty中TCP的粘包问题,上一篇<Netty中LineBasedFrameDecoder解码器使用与分析:解决TCP粘包问题>通过行解码器的使用来解决TCP粘包问题,这意味着Netty的服务端和客户端在每次发送请求消息前,都需要在消息的尾部拼接换行符. 除了使用行解码器外,Netty还提供了通用的分隔符解码器,即可以自定义消息的分隔符,那就是DelimiterBasedFrameDecoder分隔符解码器.