我的照片:
在这张图片中,我使用单选按钮保存组类型。如果选择资产负债表,则保存为“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');
}
您没有将后期数据分配给变量$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';
您可以使用如下括号捕获整个三元运算符:
$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;
}
另外......我建议你使用===
比较器代替==
比较器,就像你提供的代码一样。第三个=
确保两个给定值具有相同的数据类型,因此您在示例中将string
与另一个string
进行比较。