2009-12-15 105 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