我已经设置了一个带有复选框的文件。
<input type="checkbox" name="rights[]" value="1" class="a"> A
<input type="checkbox" name="rights[]" value="2" class="b"> B
<input type="checkbox" name="rights[]" value="3" class="c"> C
现在我想如果用户选择选项A然后我想设置变量并为其赋值1.如果用户选择多个值i-e A和B我想设置一个值为'BOTH'的变量。
$right = $this->input->post('rights');
if (in_array ('1', $right)){
$rights = '1';
}
if (in_array ('2', $right)){
$rights = '2';
}
if (in_array ('3', $right) ){
$rights = '3';
}
if (array_intersect($right, array('2', '3') ) ){
$rights = 'both';
}
我通过使用in_array()和array_intersect()函数尝试了这一点但是当用户选择B或C时,变量值设置为Both,而不是将值设置为B或C.任何帮助...
答案 0 :(得分:2)
也许你可以使用它:
$numOfRights = count($right);
if ($numOfRights > 1) $rights = 'both';
else if ($numOfRights == 1) $rights[0];
else $rights = 'I have no rights'; // probably handle it better
答案 1 :(得分:0)
如何计算数组中元素的数量:
if (count($right) > 1){
$rights = 'both';
}
答案 2 :(得分:0)
<?php
if (in_array(2, $right) && in_array(3, $right) ){
$rights = 'both';
} else if (in_array ('3', $right)){
$rights = '3';
} else if (in_array ('2', $right)){
$rights = '2';
} else if (in_array ('1', $right) ){
$rights = '1';
}
?>
这样的东西?
答案 3 :(得分:0)
array_intersect()返回一个包含array1所有值的数组 所有论点都存在。
因此,如果选中2或3,它将返回包含该值的数组,因此您的条件将评估true
,这就是为什么$rights = 'both';
您可以将代码简化为:
if (!empty($right)) {
$rights = (count($right) == 1) ? array_shift($right) : 'both';
}