Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组中的PHP复选框_Php - Fatal编程技术网

数组中的PHP复选框

数组中的PHP复选框,php,Php,发布表单时,我会得到一些复选框值,如下所示: Array ( [chk0] => true , [chk1] => true, [chk3] => true, [chk1002] => on, [chk1005] => on ) 使用PHP,如何使用上述变量构造这样的JSON请求 "data": [ {

发布表单时,我会得到一些复选框值,如下所示:

Array ( [chk0] => true ,
        [chk1] => true,
        [chk3] => true,
        [chk1002] => on,
        [chk1005] => on 
      ) 
使用PHP,如何使用上述变量构造这样的JSON请求

        "data":
        [
            {
                "checkboxval": true,
                "id": 0
            },
            {
                "checkboxval": true,
                "id": 1
            },
            {
                "checkboxval": true,
                "id": 3
            },
            {
                "checkboxval": true,
                "id": 1002
            },
            {
                "checkboxval": true,
                "id": 1005
            }
        ]
请注意,我的POST变量也可以有其他表单变量,但所有复选框值都将以前缀“chk”命名。

请查看php函数。您必须稍微调整一下数组,以获得所需的确切JSON格式。

以下是一个示例

$_POST["chk1"] = "Hello";
$_POST["chk2"] = "World";
$jsonArray = array();
foreach($_POST as $key => $val){
  if(preg_match("/chk/", $key)){
    $jsonArray[$key] = $val;
  }
}
$jsonArray = array("Data" => $jsonArray);
$json = json_encode($jsonArray);
echo "<pre>";
echo $json;
echo "</pre>";

感谢为这段代码提供基础的cletus。

我还没有测试过这段代码,但可能是这样的:


如何在此处获取$input中所有已发布的复选框?我想我可以使用$input中的$U POST。。然而,$output[]数组(…)似乎在语法上是错误的。@Vincent:看起来@cletus漏掉了一个等号。我为他添加了它。我不太担心JSON格式。我感兴趣的是扫描带有chk前缀的动态生成复选框值的逻辑。@Vincent看一下@Cletus'答案。@Vincent:我对@Cletus'答案做了一个小的更正。现在试试看。
{"Data":{"chk1":"Hello","chk2":"World"}}
$output = array();
foreach ($input as $k => $v) {
  $output[] = array(
    'checkboxval' => !!$v,
    'id' => preg_replace('!^chk!', '', $k),
  );
}
header('Content-Type: application/json');
echo json_encode(array('data' => $output));
foreach ($_POST as $k => $v) {
  $output[] = array(
    'checkboxval' => ($v=='on'? true : ($v=='off' ? false : !!$v)),
    'id' => preg_replace('!^chk!', '', $k),
  );
}
header('Content-Type: application/json');
echo json_encode(array('data' => $output));
$json = '"data": [';
$first = true;
foreach ($_POST as $k => $v){
    if (preg_match('/^chk(\d+)$/', $k, $m)){
        if ($first) $first = false; else $json .= ", ";
        $json .= sprintf('{ "checkboxval" : %s, "id" : %s }', ($v && $v != "off") ? "true" : "false", $m[1]);
    }
}
$json .= ']';