Php 如何通过对另一个数组测试数组结果将复选框设置为选中状态?
我想通过测试查询结果中的一个数组和查询结果中的另一个数组,将复选框显示为选中状态,但我似乎无法得到它 以下是我到目前为止的想法: 第一个问题:Php 如何通过对另一个数组测试数组结果将复选框设置为选中状态?,php,mysql,arrays,loops,checkbox,Php,Mysql,Arrays,Loops,Checkbox,我想通过测试查询结果中的一个数组和查询结果中的另一个数组,将复选框显示为选中状态,但我似乎无法得到它 以下是我到目前为止的想法: 第一个问题: $getbficiaryres = mysqli_query($link, " SELECT a.`id`, b.`id` as `bfryid`, b.`bficiaryname`, c.`notes` as `bfrynotes` FROM `activity` a, `beneficiary` b, `bficia
$getbficiaryres = mysqli_query($link, "
SELECT
a.`id`,
b.`id` as `bfryid`, b.`bficiaryname`,
c.`notes` as `bfrynotes`
FROM
`activity` a, `beneficiary` b, `bficiarynotes` c, `actbficiary_link` d
WHERE
a.`id` = c.`activity_id` AND
a.`id` = d.`activity_id` AND
b.`id` = c.`beneficiary_id` AND
b.`id` = d.`beneficiary_id` AND
a.`id` = '".$edit."'");
$getbficiaryrow = mysqli_fetch_array($getbficiaryres);
第一个查询结果:
id bfryid bficiaryname bfrynotes
1 2 xxx xxx notes
1 4 yyy yyy notes
id bficiaryname
1 aaa
2 xxx
3 bbb
4 yyy
第二个问题:
$bficiaryres = mysqli_query($link, "SELECT `id`, `bficiaryname` FROM `beneficiary`");
第二个查询结果:
id bfryid bficiaryname bfrynotes
1 2 xxx xxx notes
1 4 yyy yyy notes
id bficiaryname
1 aaa
2 xxx
3 bbb
4 yyy
php代码:
$i = 0;
while($bficiaryrow = mysqli_fetch_array($bficiaryres)){
if($bficiaryrow['id'] == $getbficiaryrow['bfryid']){
echo '
<div class="form-group">
<div class="col-sm-12">
<div class="checkbox">
<label for="checkbox"><input type="checkbox" name="pmanfaat['.$i.']" value="'.$getbficiaryrow['bfryid'].'" checked />'.$getbficiaryrow['bfryname'].'
</label>
</div><textarea name="ketpmanfaat['.$i.']" class="form-control">'.$getbficiaryrow['bfrynotes'].'</textarea>
</div>
</div>';
}else{
echo '
<div class="form-group">
<div class="col-sm-12">
<div class="checkbox">
<label for="checkbox"><input type="checkbox" name="pmanfaat['.$i.']" value="'.$bficiaryrow['id'].'" />'.$bficiaryrow['bficiaryname'].'
</label>
</div><textarea name="ketpmanfaat['.$i.']" class="form-control"></textarea>
</div>
</div>';
}
$i++;
}
$i=0;
而($bficaryrow=mysqli\u fetch\u数组($bficaryres)){
如果($bficiaryrow['id']==$getbficiaryrow['bfryid']){
回声'
“.$getbficiaryrow['bfryname']”
“.$getbficiaryrow['bfrynotes']”
';
}否则{
回声'
“.$bficiaryrow['bficiaryname']”
';
}
$i++;
}
我期望的结果是将两个复选框xxx(id no 2)和yyy(id no 4)设置为选中,但唯一选中的是xxx
如何正确循环以测试所有阵列
我希望我的问题足够清楚
我的头就要爆炸了。。。非常感谢您的帮助
谢谢。比我的评论更好的方法是用数据填充两个数组,然后按照下面给出的代码行进行操作 假设您构建了两个数组,如示例中所示。然后迭代第一个数组并搜索第二个数组中的值。如果找到匹配项,则显示选中复选框,否则不执行任何操作
$arr1 = array("xxx", "yyy");
$arr2 = array("aaa", "xxx", "bbb", "yyy");
foreach ($arr1 as $key => $val){
if (in_array($val, $arr2)){
echo("checked: ".$val."<br />");
}
}
$arr1=数组(“xxx”、“yyy”);
$arr2=数组(“aaa”、“xxx”、“bbb”、“yyy”);
foreach($arr1作为$key=>$val){
if(在数组中($val,$arr2)){
回声(“选中:.$val.”
);
}
}
谢谢@mynawaz,尽管我在这之后仍在挣扎,但我真的很感谢你的帮助。我已经学习了更多关于数组的知识。对我来说还有很长的路要走。。。继续前进:D
大约一周后,我终于明白了,我需要的是另一个mysql查询,使用LEFT JOIN获得配对结果。这篇文章帮助我更好地理解它:
thx so您需要两个循环,一个循环迭代第一个查询的结果,另一个循环在第一个循环中迭代第二个查询的结果query@mynawaz我已经尝试循环第二个查询和其中的第一个查询,但是如果我这样做,我只得到两个复选框。。。因为第一个查询结果只给出两行。我想要的是4个复选框,其中两个复选框(xxx和yyy)设置为选中,我该怎么做?谢谢。请确保对两个查询使用两个不同的连接,因为如果使用同一个连接执行两个查询,则内部查询将重置只执行一个查询的外部查询的链接标识符iteration@mynawaz我试着按照你的建议,但是现在结果显示了8个复选框,其中两个复选框xxx和yyy设置为选中状态,这越来越接近我要查找的内容,但是现在,我如何只迭代第二个查询的行数,第二个查询只有4个复选框?执行上述操作会给我4个复选框,所有复选框的第一个值(aaa)都设置为选中状态。我哪里做错了?T_T确保您使用了与我的示例相同的控制结构,您需要做的是使用两个单独的循环从查询结果创建arr1和arr2,然后使用foreach循环和if语句检查匹配值并仅显示匹配值的复选框(不匹配值不显示)。还请注意,in_数组区分大小写,即xxx不等于xxx,两个数组中的值必须大小写相同