2009-12-29 73 views
-1

我很想知道什么语法“:”在PHP中的意思我已经看过几次,但我似乎无法解释它给自己。你还可以在一个句子中使用它....或者我的意思是,示例代码?代码“:”在php

**编辑:

抱歉的人,我指的是三元操作符。感谢您的其他参赛作品。我一开始并不知道该说什么,表示歉意。

+3

该字符可以在多个上下文中使用。也许你应该在句子中使用它,这样我们都可以知道你真的在问什么。复制并粘贴几行代码,以演示您尝试理解的任何代码的用法。 – 2009-12-29 18:24:27

回答

9

这是ternary operator

echo ($a == 1 ? "A is 1" : "A is not 1"); 
+1

+1简洁的答案! – 2009-12-29 18:21:30

10

也许你指的是ternary operator,它使用?和:如下:

$variable = boolean_expression ? "true_value" : "false_value"; 

此代码是简写一个的if-else:

if (boolean_expression) { 
    $variable = "true_value"; 
} 
else { 
    $variable = "false_value"; 
} 
0

这是一个短的形式conditional expression,在PHP被称为 “三元运算符”。有关其用法的更多详细信息,请参见PHP manual

echo ($sheLovesMe ? "She loves me!" : "She loves me not!"); 
5

它也可以指一个goto

MyGoto: 
    if (DoSomething()) 
     goto MyGoto; 

极少数情况需要一个goto,但是这就是它如果没有一个三元运算符的意思。

+0

请注意,goto运算符仅适用于PHP 5.3版本。 – alexn 2009-12-29 18:24:46

6

如何嵌入HTML中的PHP块的简写语法?例如

<body> 
    <h1>Some Header</h1> 
    <?php if($somevariable == '4') : ?> 
     <h2>Some other thing</h2> 
     <p>Some text</p> 
    <?php else: ?> 
     <h3>Else!</h3> 
    <?php endif; ?> 
</body> 

也许并不一定算作运营商。更多的分隔符在这里。

+0

不*具有*被嵌入在HTML中,是吗?它只是大多数构造的替代语法,否则会使用大括号。 – 2009-12-29 23:12:59

+0

它是为了摆脱通过HTML嵌入的PHP标签传播的无意义大括号而创建的。如果你在HTML中有一大块PHP(这么做的恐惧),你不需要使用它们。这只是用PHP包装HTML的块。 – 2009-12-30 02:45:51

2

?:运算符是一个三元运算符,称为conditional operator

因为表达表达式2expr1 ? expr2 : expr3表达式3是基于表达式1评估的返回值评估,是有条件的:

  • 如果表达式1评估为真正表达式2被评估并且返回值expr2是整个的返回值运算符表达式;
  • 否则expr3被评估并且?:运算符表达式的返回值是返回值expr3

下面是一个例子:

echo 1 == 1 ? "true" : "false"; 

如果1 == 1评估为真正"true"将回荡,否则"false"

注意,?:运营商只是一个三元运算符。字三元只是意味着有三个操作数(op1 ? op2 : op3)就像一个二进制运算符有两个操作数(例如op1 + op2op1/op2op1 % op2等)和一元运算符只是有一个操作数(例如!op-op~op等) 。

+0

+1不称它为“三元运算符” – Yacoby 2009-12-29 19:31:50