2017-08-16 110 views
0

有人可以幫我解決這個問題嗎?比較數組值與mysqli的結果

下面的代碼我在編輯頁面中使用,我想比較複選框的值,如果它匹配,使它作爲檢查。

我的兩個陣列的示例值

$CategoryDetails : Array ([0] => 6 [1] => 1) 
$Category_data : Array ([0] => 1 [1] => 3 [2] => 6 [3] => 2 [4] => 4 [5] => 7) 

$Category_data被正在使用來創建複選框並$CategoryDetails是所選的值。所以按照上面例如複選框1 & 3應該被檢查,但下面的代碼給我只有一個檢查即,複選框3

我需要將array1的每個值與array2進行比較。

<?php 
    $CategoryDetails = isset($category_list) ? $category_list : ' '; 
    $Category = dbSelectByWhere("Highlight_categories", "WHERE Highlight_cat_status=1", "Order By Highlight_Category_name"); 
    $k = 0; 
    while ($Category_data = dbFetchArray($Category)) { 
     ?> 
     <input type="checkbox" name="category[]" id="Category" value="<?php echo $Category_data['Highlight_category_id']; ?>" data-parsley-mincheck="1" required class="flat" <?php 
     if (isset($CategoryDetails) && ($CategoryDetails[$k] == $Category_data['Highlight_category_id'])) { 
      echo 'checked'; 
      if ($k < (count($CategoryDetails) - 1)) { 
       $k++; 
      } 
     } 
     ?>/> <?php echo $Category_data['Highlight_Category_name']; ?> 
    <?php } ?> 

回答

2

1:您需要使用in_array功能。

2nd: in_array函數在數組中搜索特定的值.if值存在它將返回true否則它將返回false。

第三:如果爲空變量聲明爲陣列

$CategoryDetails = isset($category_list) ? $category_list : array(); 

PHP:

while ($Category_data = dbFetchArray($Category)) { 
     ?> 
     <input type="checkbox" name="category[]" id="Category" value="<?php echo $Category_data['Highlight_category_id']; ?>" data-parsley-mincheck="1" required class="flat" <?php 
     if (isset($CategoryDetails) && in_array($Category_data['Highlight_category_id'],$CategoryDetails)) { 
      echo 'checked'; 
     } 
     ?>/> <?php echo $Category_data['Highlight_Category_name']; ?> 
     <?php } ?> 
+0

認爲它應該是'$ CategoryDe​​tails = isset($ category_list)? $ category_list:array();' –

+0

是啊很好的捕捉答案更新@AmitJoshi – JYoThI

+0

它的運作良好..非常感謝你:) – RAWhoLovesMusic