Как сделать отмеченное значение флажка в массиве

Я хочу сделать форму редактирования, значение пользователя уже выбрано, это означает, что я хочу отображать в форме редактирования значение отмеченного флажка, поэтому я пытаюсь так

<?php 
include("dbconfig.php");
$sql = "SELECT * FROM residential_propertytype WHERE status !='1'";
$result = mysql_query($sql);
while($pr_type = mysql_fetch_array($result))
{ 
$propty[] = $pr_type;

}
echo "<pre>";
var_dump($propty);
echo "</pre>";
foreach($propty as $res)
        {
        $checked = in_array($res['id'], 5) ? 'checked' : '';
        ?>

        <input type="checkbox" value="<?php echo $res['id']?>" <?php echo $checked; ?>><?php echo $res['propertyName']?>
        <?php
        }
?>

См. ниже var_dump($propty). Я получаю такой ответ

array(10) {


[0]=>
  array(8) {
    [0]=>
    string(1) "1"
    ["id"]=>
    string(1) "1"
    [1]=>
    string(9) "Apartment"
    ["propertyName"]=>
    string(9) "Apartment"
    [2]=>
    string(0) ""
    ["reg_date"]=>
    string(0) ""
    [3]=>
    string(1) "0"
    ["status"]=>
    string(1) "0"
  }
  [1]=>
  array(8) {
    [0]=>
    string(1) "2"
    ["id"]=>
    string(1) "2"
    [1]=>
    string(9) "Villament"
    ["propertyName"]=>
    string(9) "Villament"
    [2]=>
    string(0) ""
    ["reg_date"]=>
    string(0) ""
    [3]=>
    string(1) "0"
    ["status"]=>
    string(1) "0"
  }
  [2]=>
  array(8) {
    [0]=>
    string(1) "3"
    ["id"]=>
    string(1) "3"
    [1]=>
    string(16) "Individual House"
    ["propertyName"]=>
    string(16) "Individual House"
    [2]=>
    string(0) ""
    ["reg_date"]=>
    string(0) ""
    [3]=>
    string(1) "0"
    ["status"]=>
    string(1) "0"
  }
  [3]=>
  array(8) {
    [0]=>
    string(1) "4"
    ["id"]=>
    string(1) "4"
    [1]=>
    string(9) "Row House"
    ["propertyName"]=>
    string(9) "Row House"
    [2]=>
    string(0) ""
    ["reg_date"]=>
    string(0) ""
    [3]=>
    string(1) "0"
    ["status"]=>
    string(1) "0"
  }
  [4]=>
  array(8) {
    [0]=>
    string(1) "5"
    ["id"]=>
    string(1) "5"
    [1]=>
    string(5) "Villa"
    ["propertyName"]=>
    string(5) "Villa"
    [2]=>
    string(0) ""
    ["reg_date"]=>
    string(0) ""
    [3]=>
    string(1) "0"
    ["status"]=>
    string(1) "0"
  }
  [5]=>
  array(8) {
    [0]=>
    string(1) "6"
    ["id"]=>
    string(1) "6"
    [1]=>
    string(4) "Plot"
    ["propertyName"]=>
    string(4) "Plot"
    [2]=>
    string(0) ""
    ["reg_date"]=>
    string(0) ""
    [3]=>
    string(1) "0"
    ["status"]=>
    string(1) "0"
  }
  [6]=>
  array(8) {
    [0]=>
    string(1) "7"
    ["id"]=>
    string(1) "7"
    [1]=>
    string(13) "Builder Floor"
    ["propertyName"]=>
    string(13) "Builder Floor"
    [2]=>
    string(0) ""
    ["reg_date"]=>
    string(0) ""
    [3]=>
    string(1) "0"
    ["status"]=>
    string(1) "0"
  }
  [7]=>
  array(8) {
    [0]=>
    string(1) "8"
    ["id"]=>
    string(1) "8"
    [1]=>
    string(9) "Penthouse"
    ["propertyName"]=>
    string(9) "Penthouse"
    [2]=>
    string(0) ""
    ["reg_date"]=>
    string(0) ""
    [3]=>
    string(1) "0"
    ["status"]=>
    string(1) "0"
  }
  [8]=>
  array(8) {
    [0]=>
    string(1) "9"
    ["id"]=>
    string(1) "9"
    [1]=>
    string(10) "Farm House"
    ["propertyName"]=>
    string(10) "Farm House"
    [2]=>
    string(0) ""
    ["reg_date"]=>
    string(0) ""
    [3]=>
    string(1) "0"
    ["status"]=>
    string(1) "0"
  }
  [9]=>
  array(8) {
    [0]=>
    string(2) "10"
    ["id"]=>
    string(2) "10"
    [1]=>
    string(16) "Studio Apartment"
    ["propertyName"]=>
    string(16) "Studio Apartment"
    [2]=>
    string(0) ""
    ["reg_date"]=>
    string(0) ""
    [3]=>
    string(1) "0"
    ["status"]=>
    string(1) "0"
  }
}

При установке значения флажка я получаю сообщение об ошибке Предупреждение: in_array() ожидает, что параметр 2 будет массивом, заданным целым числом как решить эту проблему


person subikshan M    schedule 15.02.2017    source источник


Ответы (3)


Вам надо определиться, наверное, что вы имели в виду про 5..

Должно быть так: $array_list = array ( 1, 2, 3, 4, 5);

$checked = in_array($res['id'], $array_list) ? 'checked' : '';

В вашем примере вы передаете 5 вместо array

person jck    schedule 15.02.2017

Вы знаете значение и ключ массива, который вы хотите сопоставить, зачем использовать in_array()?

 $checked = ($res['id'] == 5) ? 'checked' : '';
person AbraCadaver    schedule 15.02.2017

В коде HTML-формы все флажки, которые вы хотите создать в виде массива, должны называться одинаково с квадратной скобкой на конце. Таким образом, выбранные флажки будут формировать массив в массиве $_POST.

<form method=post action=yourstuff.php>
Pick your favorite pizza toppings -
<input type=checkbox name=topping[] value="pepperoni"> Pepperoni <br />
<input type=checkbox name=topping[] value="ex. chz"> Extra cheese <br />
<input type=checkbox name=topping[] value="black olives"> Black olives <br />
<input type=submit>
</form>
person ivanivan    schedule 15.02.2017