How get value for unchecked checkbox in checkbox elements when form posted?
First way - hidden fields (disadvantage: the user can manipulate the value of the field (but one can manipulate the value of the checkbox too, so it's not really a problem, if you only expect 1 or 0))
<form action="" method="post"><input type="hidden" name="status_1" value="0" /><input type="checkbox" id="status_1" name="status_1" value="1" /><input type="hidden" name="status_2" value="0" /><input type="checkbox" id="status_2" name="status_2" value="1" /><input type="hidden" name="status_3" value="0" /><input type="checkbox" id="status_3" name="status_3" value="1" /><input type="submit" /></form><?phpvar_dump($_POST);/* * checking only the second box outputs: * * array (size=3) 'status_1' => string '0' (length=1) 'status_2' => string '1' (length=1) 'status_3' => string '0' (length=1) */
Second way - to assign default value for non-set indexes:
<form action="" method="post"><input type="checkbox" id="status_1" name="status_1" value="1" /><input type="checkbox" id="status_2" name="status_2" value="1" /><input type="checkbox" id="status_3" name="status_3" value="1" /><input type="submit" /></form><?phpfor($i = 1; $i<=count($_POST); $i++) { $_POST["status_$i"] = isset($_POST["status_$i"]) ? $_POST["status_$i"] : 0;}var_dump($_POST);/** * Here we will be checking only the third checkbox: * * array (size=3) 'status_3' => string '1' (length=1) 'status_1' => int 0 'status_2' => int 0 */
I think adding hidden fields like this will work
<input type="hidden" id="status_1_" name="status_1" value="0"><input type="checkbox" id="status_1" name="status_1" value="1" /><input type="hidden" id="status_2_" name="status_2" value="0"><input type="checkbox" id="status_2" name="status_2" value="1" /><input type="hidden" id="status_3_" name="status_3" value="0"><input type="checkbox" id="status_3" name="status_3" value="1" />
I thinks it impossible to get array like what you want from html forms. But this some tricks can be used:
$defaultForm = array('status_1' => 0,'status_2' => 0,'status_3' => 0, );// example array from $_POST$form = array('status_1' => 1,'status_3' => 1, );$form = array_merge($defaultForm, $form);
Result:
array(3) {
'status_1' => int(1)
'status_2' => int(0)
'status_3' => int(1)}