获取多个特定数组值

时间:2014-04-24 10:57:40

标签: php html codeigniter

我已经设置了一个带有复选框的文件。

<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.任何帮助...

4 个答案:

答案 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():

的文档
  

array_intersect()返回一个包含array1所有值的数组   所有论点都存在。

因此,如果选中2或3,它将返回包含该值的数组,因此您的条件将评估true,这就是为什么$rights = 'both';

您可以将代码简化为:

if (!empty($right)) {
  $rights = (count($right) == 1) ? array_shift($right) : 'both';
}