循环通过两个数组 - >标记复选框检查

时间:2015-09-06 20:32:49

标签: php arrays

比较两个数组时,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 } ?>

2 个答案:

答案 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
    }
?>