c语言 结构体函数:PHP的语言结构和函数的区别

相信大家经常看到对比一些PHP应用中,说用isset() 替换 strlen(),isset比strlen执行速度快等。
例子:
if ( isset($user) ) {
//do some thing
}
原因是isset是语言结构,而strlen是一个函数。还有echo 是个语言结构,不是个函数。
那什么是语言结构呢?它和函数有什么不同吗?
1、 什么是语言结构和函数
语言结构:就是PHP语言的关键词,语言语法的一部分;它不可以被用户定义或者添加到语言扩展或者库中;它可以有也可以没有变量和返回值。
函数:由代码块组成的,可以复用。从源码的角度来说,也就是基于Zend引擎的基础来实现的,ext拓展库中的函数都是这样实现的。
2、 语言结构为什么比函数快原因是在PHP中,函数都要先被PHP解析器(Zend引擎)分解成语言结构,所以有此可见,函数比语言结构多了一层解析器解析。这样就能比较好的理解,什么语言结构比函数快了。
3、 语言结构和函数的不同语言结构比对应功能的函数快语言结构在错误处理上比较鲁棒,由于是语言关键词,所以不具备再处理的环节语言结构不能在配置项(php.ini)中禁用,函数则可以。语言结构不能被用做回调函数
4、 语言结构列表
echo()
print()
die()
isset()
unset()
include(),注意,include_once()是函数
require(),注意,require_once()是函数
array()
list()
empty()
本文链接http://www.cxybl.com/html/wlbc/Php/20130326/37403.html

时间: 2024-11-03 11:03:34

c语言 结构体函数:PHP的语言结构和函数的区别的相关文章

详解C++程序中定义struct结构体的方法_C 语言

什么是结构体?简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同. 结构体的定义 定义结构体使用struct修饰符,例如: struct

计蒜客 C语言 泥塑课中结构体的使用时,typedef使用与否的区别

问题描述 计蒜客 C语言 泥塑课中结构体的使用时,typedef使用与否的区别 代码一: #include typedef struct student{ int l; int w; int h; int v; char name[9]; }stu[10]; void func(int n){ int i, ave = 0, robber, victim; for(i = 0; i < n; i ++){ scanf("%d %d %d %s", &stu[i].l, &

深入剖析C++中的struct结构体字节对齐_C 语言

什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同.一些平台对某些特定类型的数据只能从某些特定地址开始存取.比如有些架构的CPU在访问一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证

结构体 赋值 初始化-C语言结构体循环赋值老是出现随机数。。

问题描述 C语言结构体循环赋值老是出现随机数.. 问题是这样的 本人大一 C语言课程设计 做一个运动员管理系统 部分代码如下 #include #include #include #include void search(); void enter(); void browse(); void save(); void add(); int load(int y); int exchange(int x); void Department(); void sex(); void project(

一道超经典的C++结构体的题目_C 语言

题目描述:有10个学生,每个学生的数据包括学号.姓名.英语.数学.物理三门课的成绩,从键盘输入10个学生数据,要求打印出3门课程的总平均成绩,以及最高分的学生的数据(包括学号,姓名,3门课的平均成绩,平均分数). c++代码: 复制代码 代码如下: #include<iostream>#include<string>using namespace std;struct Student{//声明结构体Student string num; string name; float eng

如何在传输结构体数据的同时,完成结构体中变量数据的采集?

问题描述 最近在做一个项目,自己负责的主要工作是将定义好的结构体中的变量的数据传出来,以及matlab计算后传回来的数据进行解算并显示结构体1:传递初始化数据-没有问题结构体2:实时传递摇杆采集的数据-有问题结构体3:传递自动飞行数据-没有问题结构体4:接受matlab结算的数据,并进行显示(暂时还没有测试)现在遇到的问题,主要是:我需要实时传递摇杆采集的数据并传递出去这是按钮事件,当点击按钮之后开始传递结构体的数据SendUAV_ManualPilotpSendUAV_ManualPilot;

[叩响C#之门]第5章 枚举、结构体和数组 5.2 结构体

5.2 结构体 很多相互联系的信息可以组成一个整体,比如一个学生的信息包括学号.姓名.性别.年龄等,它们紧密联系,共同描述学生的状况.在C#中我们可以把这些紧密联系变量定义成结构体(Structure).

c语言-C语言函数的形参(结构体类型)和实参类型(指针)可以不同吗?

问题描述 C语言函数的形参(结构体类型)和实参类型(指针)可以不同吗? int numstus; int lens; student pointer; void main() { int i=1; char str[2]; lens=100; pointer=(student *)malloc(lens*LEN); /分配内存*/ numstus=0; welcome(); /*欢迎界面*/ while(i>0) { i=menu_select(); /*控制菜单*/ switch(i) { c

C++动态分配和撤销内存以及结构体类型作为函数参数_C 语言

C++动态分配内存(new)和撤销内存(delete) 在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除.在C语言中是利用库函数malloc和free来分配和撤销内存空间的.C++提供了较简便而功能较强的运算符new和delete来取代malloc和free函数. 注意: new和delete是运算符,不是函数,因此执行效率高. 虽然为了与C语言兼容,C++仍保留malloc和free函数,但建议用户不用malloc和free函数,而用new和delete运算

详解C语言结构体中的函数指针_C 语言

结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.所以,标准C中的结构体是不允许包含成员函数的,当然C++中的结构体对此进行了扩展.那么,我们在C语言的结构体中,只能通过定义函数指针的方式,用函数指针指向相应函数,以此达到调用函数的目的. 函数指针 函数类型 (*指针变量名)(形参列表):第一个括号一定不能少. "函数类型"说明函数的返回类型,由于"()"的优先级高于"*",所以指针变量名外的括号必不可少.  注意指针函数与函数指针表示