in_array无法从fetch_array创建的数组中工作

时间:2013-12-04 11:33:45

标签: php mysql arrays

我遇到阵列困难。 我的数据库中有一个表与多对多的关系,员工可以拥有多种技能,并且技能可以与多名员工相关联。 我正在尝试设置一个表单,用户可以使用复选框来显示员工的技能。

如果从数据库返回值,我目前停留在显示带框的复选框上。 我正在运行一个select语句来获取数据,然后将其保存到一个数组(print_r显示正确的数据)然后我尝试使用in_array来确定是否应该选中复选框,但没有任何反应。 有人能看出我做错了吗?谢谢(下面静态设置为员工11,这有3个结果)

<?php   
require_once('db_connect.php');

    $array = array();
    $qry = "SELECT skill_id FROM skillsets WHERE emp_id = 11";

    $stmt = $mysqli->prepare($qry);

    $stmt->execute();
    $result = $stmt->get_result();

    while($row = $result->fetch_array(MYSQLI_NUM))
    {
    $array[] = $row;
    }

?>
                <input type="checkbox" name="chk1[]" value="1" <?php if(in_array("1", $array)){echo 'checked="checked"';}?> >skill1
                <input type="checkbox" name="chk1[]" value="3" <?php if(in_array("3", $array)){echo 'checked="checked"';}?> >skill2
                <input type="checkbox" name="chk1[]" value="5" <?php if(in_array("5", $array)){echo 'checked="checked"';}?> >skill3
                <input type="checkbox" name="chk1[]" value="2" <?php if(in_array("2", $array)){echo 'checked="checked"';}?> >skill4
                <input type="checkbox" name="chk1[]" value="6" <?php if(in_array("6", $array)){echo 'checked="checked"';}?> >skill5
                <input type="checkbox" name="chk1[]" value="4" <?php if(in_array("4", $array)){echo 'checked="checked"';}?> >skill6

1 个答案:

答案 0 :(得分:2)

$array[] = $row;

这会将数组$row保存为$array的新元素。结构就像这样

Array(
    Array(0),
    Array(1),
    Array(2),
    ...
)

相反,请将代码更改为以下内容:

while($row = $result->fetch_array(MYSQLI_NUM)) {
    $array[] = $row[0];
}

这将为您提供结构

Array(
    0,
    1,
    2,
    ...
)

并且in_array应该可以正常工作