将多个复选框值作为非数组

时间:2012-08-10 05:16:40

标签: php javascript html

我试图找到一种方法从多个复选框中获取值而不将它们命名为数组。 即我希望为此获得同名的价值。

<input type="checkbox" name="name" >
<input type="checkbox" name="name" >
<input type="checkbox" name="name" >
<input type="checkbox" name="name" >

对此感到沮丧。

<input type="checkbox" name="name[]" >
<input type="checkbox" name="name[]" >
<input type="checkbox" name="name[]" >
<input type="checkbox" name="name[]" >

我知道这可以在CNET正在使用它时完成。

我认为我必须通过类似的方式将此名称值转换为服务器端的数组。

$search= ($_GET['name']);
$array = array();
$array[] = $search;
$a= $arrry;
echo "$a";

这肯定不起作用。

有人能告诉我怎么做。

感谢。

5 个答案:

答案 0 :(得分:1)

当然,如果没有[]属性中的name,则无法在PHP中实现。但是,如果要为所有复选框保留相同的名称name,则必须使用javascript / jquery获取所选复选框的值。然后将逗号分隔的值字符串发送到您的php页面。

   // This is how you will get the values of selected checkboxes
   var csv = '';    
   $('input:checkbox:checked').each(function (i) {
       csv+= this.value + ',';
   });
   alert(csv); // alerts 1,2,3,4,

演示:http://jsfiddle.net/codef0rmer/nssQZ/

答案 1 :(得分:1)

您可以跟踪 onSubmit 事件。

当它被触发时(对于托管输入的表单),将每个输入的名称更改为唯一的名称(例如name-1,name-2)或仅名称[]。

您将获得服务器端的内容将很容易处理。

答案 2 :(得分:1)

您需要处理QUERY_STRING(或$ HTTP_RAW_POST_DATA)而不是访问$ _GET(或$ _POST)

示例(您需要对其进行优化,因为您无法信任数据字符串的正确格式):

 $__POST=array();
 $__GET=array();
 foreach(array('POST'=>file_get_contents("php://input"),
               'GET'=>$_SERVER['QUERY_STRING']) as $k=>$v)
 {
   $vv=explode('&',$v);
   foreach($vv as $value)
   { 
    parse_str($value,$var);
    if(!isset(${'__'.$k}[key($var)]))
     {
      ${'__'.$k}[key($var)]=array(reset($var));
     }
     else
     {
      ${'__'.$k}[key($var)][]=reset($var);
     }
   }
 }
print_r(array($__GET,$__POST));

答案 3 :(得分:-1)

不可能。

如果您设置相同的名称(通常是无效的标记TOO),则只会检索最后检查的值。

答案 4 :(得分:-1)

$ _GET ['name']是数组,所以如果使用想要引用其中的值,你可以使用

$_GET['name'][0] // return the first value

或者如果您想将其转换为字符串

$getValue = implode(',',$_GET['name']); // return "value1,value2,value3,value4,value5"

将以字符串格式

获取值