PHP中冒号、endif、endwhile、endfor这些都是什么

我们经常在wordpress一类博客程序的模板里面看到很多奇怪的PHP语法,比如:
<?php if(empty($GET_[‘a‘])): ?>
<font color="red">空的</font>
<?php endif; ?>
对于相当一部分PHP爱好者来说根本没见过啊,这些是什么东西呢?难道是那些博客的开发者自己搞的仿PHP的模板语言?
非也,其实这些都是PHP的语法,只不过不常用而已,这些都是PHP流程控制的替代语法。
这里就就给大家详细说一下PHP流程控制的替代语法。什么是替代语法?
简单的说就是一些语法的另类写法。

PHP中那些语法有替代语法?
流程控制(包括if,while,forforeach,switch)这几个语句有替代语法。

替代语法的基本形式:
左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;

举个例子吧:
<?php if ($a<0): ?>
是负数拉
<?php endif; ?>
上面的语句等同于
<?php if ($a<0){ ?>
是负数拉
<?php } ?>

为什么纯PHP代码里面几乎看不到?
这些语法有点不符合C家族的传统有点另类,大家不大习惯于这种语法,而且不是很方便

大家都不习惯,而且这么另类要他有什么用?蛋疼吗?
存在就是合理,它自有它的用处,这些语法能发挥的地方是在PHP和HTML混合页面的代码里面。好处如下:
1.使HTML和PHP混合页面代码更加干净整齐。
有代码洁癖的朋友最惧怕的就是乱七八糟的混合代码,有了这些没有花括号的替代语法,各位爱干净的朋友开心到尿震。
2.流程控制逻辑更清晰,代码更容易阅读
要改别人的PHP和HTML混合代码,打开发现,我擦!太TMD垃圾了!如果用替代语法,我想再垃圾的程序开发人员也不至于写的太乱吧。
3.一些从ASP等其他类basic语言家族转来的朋友,会更容易使用PHP。

讲半天没用的,捞点干的行不?这东西怎么用?

根据之前描述的使用方法,if语句的替代语法使用如下:
<?php if ($a == 5): ?>
  <div>等于5</div>
<?php elseif ($a == 6): ?>
  <div>等于5</div>
<?php else: ?>
  <div>不是5就是6</div>
<?php endif; ?>

while替代语法:
<?php while (expr): ?>
  <li>循环点什么</li>
<?php endwhile; ?>

for替代语法:

<?php for (expr1; expr2; expr3): ?>
  <li>循环点什么</li>
<?php endfor; ?>
foreach替代语法:
<?php foreach (expr1): ?>
  <li>循环点什么</li>
<?php endforeach; ?>

switch替代语法:
<?php
switch ($i):
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
        echo "i is not equal to 0, 1 or 2";
endswitch;
?>

时间: 2024-10-11 07:01:49

PHP中冒号、endif、endwhile、endfor这些都是什么的相关文章

JS中冒号的作用

转载: JS中冒号的作用1.声明对象的成员2.switch语句分支3.三元表达式 1.声明对象的成员 var Book ={    Name: '法',    Price: 100,    Discount : function(rate)   {       this.Price *= rate;    }};alert(Book.Price);Book.Discount(0.8); // 8折alert(Book.Price); 2.switch语句分支 var a = 2;switch (

oc将字符串中单词按照出现次数(次数都不一样)降序排序,排序之后单词只出现一次,源字符串中单词用下划线连接,生成字符串也用下滑线连接

/* 将字符串中单词按照出现次数(次数都不一样)降序排序,排序之后单词只出现一次,源字符串中单词用下划线连接,生成字符串也用下滑线连接(10分) 如传入:@"good_good_study_good_study" 返回:@"good_study" 如传入:@"I_love_I_hate_love_love" 返回:@"love_I_hate" */ 方法1:选择排序 -(NSString *)sortStringByNumbe

在JS中,一切东东其实都是对象

对象是组成JavaScript的基本单元,在JS中,一切东东其实都是对象,而且功能非常强大,它不仅风格独特,功能也与众不同. 一.引用(reference) 引用的概念是JS的基础之一,它是指向对象实际位置的指针.见下面的例子: var items = new Array("abc","def","hig"); //创建此数组的引用 var Ref = items; items.push("klm"); alert(Ref.l

SVN 中trunk、branches、tags都什么意思?

1.trunk是主分支,是日常开发进行的地方.2.branches是分支.一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中.又比如为不同用户客制化的版本,也可以放在分支中进行开发.3.tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档.注意:svn并没有明确的规范,更多的还是用户自己的习惯.下面是详细介绍:比如一个项目有main.cpp, common.h两个文件,假设目前在开发的是最新的3.0版本,而且1.0/2

lua中冒号(:)与点号(.)的区别

在lua开发中我们经常会混淆这两者之间的区别,下面通过一个示例来解释: 1 Class = {} 2 Class.__index = Class 3 4 function Class.new(x,y) 5 local cls = {} 6 setmetatable(cls, Class) 7 cls.x = x 8 cls.y = y 9 return cls 10 end 11 function Class:test() 12 -- 等价于 13 -- function Class.test(

生活中走得远的,都是自愈能力很强的人

就像冯仑说过:伟大,都是熬出来的.生活中走得远的,都是自愈能力很强的人. 1918年12月23日深夜,巴黎的某个街角,两辆马车轰然相撞,其中一辆车主随着车身一起翻覆,被压在沉重的钢铁支架下,口袋里滑落一串珍珠项链,刺眼地闪耀在血色中. 这个男人叫亚瑟·卡伯,是当时著名的贵族和工业家,几乎100年后,即便贵族的徽印被时光涤荡,他还有另一个知名的身份:可可·香奈儿的恋人和支持者. 他资助一名不文的香奈儿开办自己的帽子店,从他制作精良的男士服装中汲取灵感运用到女性衣饰,他请巴黎最炙手可热的歌剧演员带上

MATLAB中冒号的用法解析

MATLAB中冒号的用法解析 1.: 表示所有的意思. (1)如:a(1,:) 表示a的第1行,示例: 结果: 同样的如果a(2,:)表示a的第2行 (2)反过来,a(:,2) 表示a的第3列,示例: 结果: (3)如果不写数字即a( : ),则表示全部元素,并且返回的结果a变为列向量.示例: 结果: 2.: 表示到,表示一个范围. (1)如a(1:2,3) 表示第1行到第2行的第3列元素.示例: 结果: (2)a(1:2,:) 表示第1行到第2行的所有元素.示例: 结果: (3)同样有a(:,

转载——c++中冒号(:)和双冒号(::)的用法

1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; XXX (2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型. struct _XXX{ _XXX() : y(0xc0) {} }; (3) public:和private:后面的冒号,表示后面定义的所有成员都是公有或私有的,直到下一个"pub

C开发 中原子性操作 , 除了快什么都不剩下了

题外话 今天,听歌曲听到一首缅怀迈克尔·杰克逊的歌曲 如下: http://music.163.com/#/song?id=1696048  Breaking News 每次听迈克尔 音乐,特别有战斗力,特别兴奋,学起技术来也特别带感,推荐喜欢的人试试. #include <stdio.h> int man(int argc, char* argv[]) { printf("Hope you are better %s\n","Michael Jackson&qu