我在使用三元if运算符设置数组索引时遇到问题。我试图做的是,如果一个语句满足if条件,我想为一个数组添加一个额外的索引,我将用它来插入数据库中的数据。但是,每次我使用三元if运算符来包含这些数组索引时,我总是会收到错误
意外' =>' T_DOUBLE_ARROW
这是我的代码:
$data = array('remark' => $this->input->post('remark'),
'rating' => $this->input->post('rating'),
($_SESSION['user_type'] == 'Customer' ? 'user_id' => $_SESSION['id'] : ''),
($_SESSION['user_type'] == 'Customer' ? 'food_item_id' => $this->input->post['refid'] : ''));
任何知道如何解决这个问题的人?难道我做错了什么?任何帮助将不胜感激
答案 0 :(得分:1)
在定义数组时(您的方式)无法有选择地设置索引,但您可以使用array_filter为您删除不需要的索引:
$data = array_filter(array(
'remark' => $this->input->post('remark'),
'rating' => $this->input->post('rating'),
'user_id' => $_SESSION['user_type'] == 'Customer' ? $_SESSION['id'] : '',
'food_item_id' => $_SESSION['user_type'] == 'Customer' ? $this->input->post['refid'] : '',
));
这样,在分配给$ data变量之前,数组中的所有空字符串值都将被删除。
供参考,见:
答案 1 :(得分:0)
以下是您应该使用它的方式:
$data = array('remark' => $this->input->post('remark'),
'rating' => $this->input->post('rating'),
'user_id' => ($_SESSION['user_type'] == 'Customer' ? $_SESSION['id'] : ''),
'food_item_id' => ($_SESSION['user_type'] == 'Customer' ? $this->input->post['refid'] : ''));
答案 2 :(得分:0)
将三元if功能移至=>
之后
$data = array(
'remark' => $this->input->post('remark'),
'rating' => $this->input->post('rating'),
'user_id' => $_SESSION['user_type'] == 'Customer'
? $_SESSION['user_type']
: '',
'food_item_id' => $_SESSION['user_type'] == 'Customer'
? $this->input->post['refid']
: ''
);
答案 3 :(得分:0)
如果要将数据动态添加到数组中,如果条件失败,如果您不希望密钥存在,则不应该使用三元运算符。通过检查定义数组后的条件单独添加它们,如果条件为真,则添加元素。
$data = array('remark' => $this->input->post('remark'),
'rating' => $this->input->post('rating'));
if ($_SESSION['user_type'] == 'Customer')
$data['user_id'] = $_SESSION['id'];
if ($_SESSION['user_type'] == 'Customer')
$data['food_item_id'] = $this->input->post['refid'];
你仍然可以在数组定义中使用三元运算符,但是你仍然可以创建键(即使该元素中的值为空)
$data = array('remark' => $this->input->post('remark'),
'rating' => $this->input->post('rating'),
'user_id' => ($_SESSION['user_type'] == 'Customer' ? $_SESSION['id'] : ''),
'food_item_id' => ($_SESSION['user_type'] == 'Customer' ? $this->input->post['refid'] : ''));