2012-02-15 3 views
1

я в настоящее время есть два массива, которые выглядят следующим образом:Проверка флажка на основе значения массива?

образчики:

Array 
(
    [0] => Array 
     (
      [swatch_id] => 8 
      [swatch_file] => orange_swatch.jpg 
     ) 

    [1] => Array 
     (
      [swatch_id] => 9 
      [swatch_file] => pink_swatch.jpg 
     ) 

    [2] => Array 
     (
      [swatch_id] => 10 
      [swatch_file] => green_swtach.jpg 
     ) 

) 

Отдельные образчики:

Array 
(
    [0] => Array 
     (
      [swatches_has_products_id] => 18 
      [swatches_swatch_id] => 8 
      [products_product_id] => 19 
     ) 

    [1] => Array 
     (
      [swatches_has_products_id] => 19 
      [swatches_swatch_id] => 10 
      [products_product_id] => 19 
     ) 

) 

Я пытаюсь проверить флажок, если $swatch['swatch_id'] равно $selected_swatches['swatches_swatch_id']. Я делаю это с помощью следующего кода:

<?php foreach ($swatches as $k => $swatch): ?> 
    <li> 
     <img src="<?php echo base_url(); ?>media/images/swatches/<?php echo $swatch['swatch_file']; ?>" height=""/> 
     <input type="checkbox" name="product_has_swatch[]" value="<?php echo $swatch['swatch_id']; ?>" <?php if($swatch['swatch_id'] == $selected_swatches[$k]['swatches_swatch_id']) : ?> checked="checked" <?php endif; ?> /> 
    </li> 
<?php endforeach; ?> 

Однако я получаю следующее сообщение об ошибке, если нет совпадений:

A PHP Error was encountered 
    Severity: Notice 
    Message: Undefined offset: 2 
    Filename: products/create.php 
Line Number: 137 

Линия 137 является if, чтобы проверить, если у меня есть спички; Где я иду не так?

ответ

0

Одно из решений:

// make a new array of selected ids 
$newArr = array(); 
foreach($selected_swatches as $val) { 
    array_push($newArr, $val['swatches_swatch_id']); 
} 

// then check with in_array, like: 
<?php foreach ($swatches as $k => $swatch): ?> 
    <li> 
     <img src="<?php echo base_url(); ?>media/images/swatches/<?php echo $swatch['swatch_file']; ?>" height=""/> 
     <input type="checkbox" name="product_has_swatch[]" value="<?php echo $swatch['swatch_id']; ?>" <?php if(in_array($swatch['swatch_id'], $newArr)) : ?> checked="checked" <?php endif; ?> /> 
    </li> 
<?php endforeach; > 

Надеется, что это помогает

0

, потому что у вас нет индекса 2 в Выбранные образцы массив .. вот почему он дает вам уведомление.

0
**Check this out it works fine** 

$swatches   = array(0 =>array('swatch_id'=>8,'swatch_file'=>'orange_swatch.jpg'), 
          1 => array('swatch_id'=>9,'swatch_file'=>'ping_swatch.jpg'), 
          2 =>array('swatch_id'=>10,'swatch_file'=>'green_swatch.jpg') 
          ); 
$selected_swatches = array(0 =>array('swatches_has_products_id'=>18,'swatches_swatch_id'=>8,'products_product_id'=>19), 
          1 =>array('swatches_has_products_id'=>19,'swatches_swatch_id'=>10,'products_product_id'=>19), 

          );    

foreach($swatches as $k=>$swatch) : 

    ?> 

<li> 

<input type="checkbox" name="product_has_swatch" value="<?php echo $swatch['swatch_id'];?>" 

<?php 
     if($swatch['swatch_id'] == $selected_swatches[$k]['swatches_swatch_id']): 
       echo "checked = 'checked'"; 
     endif; 
    ?> 


/> 
</li> 
<?php endforeach; ?> 
Смежные вопросы