我的图片:
在此图片中,我正在使用单选按钮保存组类型。如果选择资产负债表,则保存为“ B”,而盈亏为“ P”。如果未选择任何内容,则保存为“ T”。
现在我的问题是我正在使用三元运算符检查条件,但是对我来说只有第二个条件在起作用。在该运算符中,它不适用于多个条件。 我如何解决我的问题。
public function GEntry()
{
$session_data = $this->session->userdata('logged_in');
$data['username'] = $session_data['username'];
$this->form_validation->set_rules('gName', 'gName', 'required');
$this->form_validation->set_error_delimiters('<div class="text-danger">',
'</div>');
$check1 = isset($_POST['gType']);
$check = ($check1 == 'B') ? "B" : ($check1 == 'P') ? "P" :'T';
//$check1 = isset($_POST['tin_no1']) ? "Y" : "N";
if ($this->form_validation->run())
{
$data= array(
'gName' => $this->input->post('gName'),
'gType' => $check
);
//means insert a data into the table
$this->db->insert('groups',$data);
return redirect('Master/Groups');
}
答案 0 :(得分:1)
您没有将过帐数据分配给变量$check1
。您正在像这样$check1 = isset($_POST['gType']);
进行检查,这将为您提供true
/ false
。
更新如下:
$check1 = isset($_POST['gType']) && in_array($_POST['gType'], ['B', 'P']) ? $_POST['gType'] : 'T';
然后删除此行$check = ($check1 == 'B') ? "B" : ($check1 == 'P') ? "P" :'T';
答案 1 :(得分:0)
您可以使用如下方括号捕获整个三元运算符:
$a = ($b === 'A') ? 'A' : (($b === 'B') ? 'B' : (($b === 'C') ? 'C' : 'D'));
但是 ...如果您的决策需要超过2-3个条件,我不建议您使用此过程。在这种情况下,我建议您使用switch代替:
switch ($b)
{
case 'A':
$a = 'A';
break;
default:
$a = 'D';
break;
}
ALSO ...我建议您使用===
比较器,而不要像您提供的代码中那样使用==
比较器。第三个=
确保两个给定值都具有相同的数据类型,因此在示例中将string
与另一个string
进行比较。