2015-09-06 49 views
1

Iam在比較兩個數組時遇到了問題。通過兩個數組循環 - >標記複選框檢查

在第一個數組中,我有行的ID,我需要在其中標記複選框ckecked。在第二個數組中,有一個來自表的項目的完整數據集。

我沒有運氣,使其正常工作,但 - 這是我的最後一次嘗試,這顯然不正常工作,因爲它做的一切的6倍(如第一個數組包含6種元素)

第一陣列: 陣列(6){ [0] => 串(2) 「24」 [1] => 串(2) 「25」 [2] => 串(2) 「28」 [3 (1)「9」 [5] => st環(2) 「10」 }

$產品 - 6個元件

$數據的陣列 - 數據集的陣列從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-> 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

第一個數組是什麼? $ DATAS? –

+0

@ some-non-descript-user:nope,第一個數組是** $ product **。 ** $ datas **是從mysql獲取的數據集。 – HyperT

+0

你可以顯示'$ datas'的結果嗎? – aldrin27

回答

0

如果$產品包含產品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標籤。

+0

這正是我需要的!謝謝你,哥們。 – HyperT

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