2009-12-15 50 views
0

所有,PHP复选框阵列

当窗体被贴出来,我得到这样一些复选框值如下:

[chk0] => Array ( 
    [1] => on 
    [57] => on 
    [83] => on 
) 
[chk1] => Array ( 
    [69] => on 
    [71] => on 
) 
[chk1001] => on 
[chk1005] => on 
[chk1008] => on 

使用PHP,我如何构建与2个阵列像这样由JSON请求使用上述变量?所有复选框都以“chk”作为前缀。如果复选框是一个数组并且具有值,则应该生成第一个JSON请求。对于所有不是数组的应用程序,它应该生成第二个。

//JSON Request 1 
     "data1": 
      [ 
       { 
        "checkboxval": true, 
        "id": 1 
       }, 
       { 
        "checkboxval": true, 
        "id": 57 
       }, 
       { 
        "checkboxval": true, 
        "id": 83 
       }, 
       { 
        "checkboxval": true, 
        "id": 69 
       }, 
       { 
        "checkboxval": true, 
        "id": 71 
       } 
      ] 

//JSON Request 2: 
    "data2": 
     [ 
      { 
       "checkboxval": true, 
       "id": 1001 
      }, 
      { 
       "checkboxval": true, 
       "id": 1005 
      }, 
      { 
       "checkboxval": true, 
       "id": 1008 
      } 
     ] 

回答

5
$data = array(
    "data1" => array(), 
    "data2" => array(), 
); 
foreach($_POST as $key => $value) 
{ 
    if(preg_match('/^chk/',$key)) 
    { 
     if(is_array($value)) 
     { 
      foreach($value as $id => $on) 
       $data["data1"][] = array("checkboxval"=>true,"id"=>$id); 
     } 
     else 
      $data["data2"][] = array("checkboxval"=>true,"id"=>str_replace("chk","",$key)); 
    } 
} 
$json = json_encode($data); 
+0

感谢您的回答。但我认为它不适用于第一种情况。 – Jake 2009-12-15 01:07:52

+0

好点。我将对其进行编辑以进行更正。 – rossipedia 2009-12-15 02:15:33