这行php代码是什么意思? (笨)

时间:2011-06-14 07:21:26

标签: php codeigniter

所以今天我使用http://bambooinvoice.org/源代码,我找到了这一行:

$id = ($this->input->get_post('id')) ? (int) $this->input->get_post('id') : $this->uri->segment(3);

我已经理解了codeigniter中的基本语法用法,但希望有人能告诉我这两个语法之间使用这个符号(?)有什么用处?如果是某种技术,这项技术的名称是什么?他试图通过这行代码实现什么目标?

感谢。

4 个答案:

答案 0 :(得分:2)

Ternary运营商;与

相同
if(($this->input->get_post('id')) == true)
{ 
$id =(int) $this->input->get_post('id')
} 
else 
{
$id=$this->uri->segment(3);
}

答案 1 :(得分:1)

将post变量“id”绑定到$ id,如果已设置。否则使用第三个url-segment的值。

答案 2 :(得分:1)

这是以下的捷径:

if($this->input->get_post('id'))
   $id = $this->input->get_post('id');
else
   $id = $this->uri->segment(3);

这是一个三元运营商: 语法:

$id = (condition) ? value_when_condition_is_true : value_when_condition_is_false;

答案 3 :(得分:0)

$ id =($ this-> input-> get_post('id'))? (int)$ this-> input-> get_post('id'):$ this-> uri-> segment(3);

这:z =(x> y?x:y); 就像:

if (x > y)
{
z = x;
}
else
{
z = y;
}

这:$ this-> input-> get_post('id')

表示你在一个对象(类)中,使用另一个类“input”并使用方法get_post()。

this:(int)x 将x转换为int。

他选择如何分配id,如果get_post()不同于0或“”使用uri-segment的值(3)