比较两个数组时,Iam卡住了。
在第一个数组中,我有行的ID,我需要将复选框标记为ckecked。在第二个数组中,有一个完整的表项数据集。
我没有运气让它正常工作 - 这是我的最后一次尝试,显然无法正常工作,因为它做了所有事情6次(因为第一个数组包含6个元素)
第一个数组: array(6){ [0] => string(2)“24” [1] => string(2)“25” [2] => string(2)“28” [3] => string(1)“8” [4] => string(1)“9” [5] => string(2)“10” }
$ products - 包含6个元素的数组
$ data - 从mysql中提取的数据集数组
foreach($datas as $data) {
if(!empty($products)) {
foreach($products as $product) {
if($product == $data->id) { ?>
<tr>
<td><input type="checkbox" name="selectedProduct[]" value="<?=$data->id;?>" class="big-checkbox" checked="checked">
<td><?=$data->evidenceId;?></td>
<td><?=$data->modelName;?></td>
<td><?=$data->size;?></td>
<td><?=$data->price;?></td>
<td><?=$data->brand;?></td>
</tr>
<?php }
if($product !== $data->id) { ?>
<tr>
<td><input type="checkbox" name="selectedProduct[]" value="<?=$data->id;?>" class="big-checkbox">
<td><?=$data->evidenceId;?></td>
<td><?=$data->modelName;?></td>
<td><?=$data->size;?></td>
<td><?=$data->price;?></td>
<td><?=$data->brand;?></td>
</tr>
<?php }
}
}
我需要的是从$ data渲染每一行并选中标记框 $ data-&gt; id == $ product
有什么建议吗? 谢谢! 马丁
修改
也试过像这样的方法,但它只是搞砸了html表:
foreach($datas as $data) {
foreach($selectedProducts as $product) {
if($product == $data->id) { ?>
<tr>
<td><input type="checkbox" name="selectedProduct[]" value="<?=$data->id;?>" class="big-checkbox" checked="checked">
<?php }
if($product !== $data->id) { ?>
<tr>
<td><input type="checkbox" name="selectedProduct[]" value="<?=$data->id;?>" class="big-checkbox">
<?php }
}
?>
<td><input type="checkbox" name="selectedProduct[]" value="<?=$data->id;?>" class="big-checkbox">
<td><?=$data->evidenceId;?></td>
<td><?=$data->modelName;?></td>
<td><?=$data->size;?></td>
<td><?=$data->price;?></td>
<td><?=$data->brand;?></td>
</tr>
<?php } ?>
答案 0 :(得分:1)
如果$ products包含产品ID,您可以检查是否必须使用in_array()选择产品。不需要第二个循环。
if(!empty($products)) {
foreach($datas as $data) {
?>
<tr>
<?php
if(in_array($data->id, $products) {
?>
<td><input type="checkbox" name="selectedProduct[]" value="<?=$data->id;?>" class="big-checkbox" checked="checked"></td>
<?php
}else{
?>
<td><input type="checkbox" name="selectedProduct[]" value="<?=$data->id;?>" class="big-checkbox"></td>
<?php
}
?>
<td><?=$data->evidenceId;?></td>
<td><?=$data->modelName;?></td>
<td><?=$data->size;?></td>
<td><?=$data->price;?></td>
<td><?=$data->brand;?></td>
</tr>
}
}
...并且您的代码缺少关闭td标记。
答案 1 :(得分:0)
试试这个代码
假设您的产品数组包含(型号名称,尺寸......)
和数据数组包含所选产品的产品ID
<?php
//collect seelcted IDs
$selectedIds = array();
foreach($datas as $data){
$selectedIds[]=$data->id;
}
//now loop through products, and check if current product_id exists (in_array()) in selectedIds echo checked else nothing
foreach($products as $product) {
?>
<tr>
<td><input type="checkbox" name="product_n" value="<?=$product->id;?>" class="big-checkbox" <?php echo (in_array($product->id,$selectedIds?"checked='checked'":"")) ?> >
<td><?=$product->evidenceId;?></td>
<td><?=$product->modelName;?></td>
<td><?=$product->size;?></td>
<td><?=$product->price;?></td>
<td><?=$product->brand;?></td>
</tr>
<?php
}
?>