2012-06-28 2 views
0

Я получаю значение из базы данных в виде массиваКак сравнить одинаковые значения в массиве в php?

<?php 
    foreach($this->getlist as $value){ 
     foreach($this->listOfdealers as $list){ 

?> 
<tr> 
    <td> 
     <input type="checkbox" name="list[]" value=<?php echo $list->nList?> 
      <?php if($value->nSubList==$list->nList){echo 'checked'; } ?> /> 
     <label for="list_32"><?php echo $list->nList?> 
     </label> 
    </td> 
</tr> 
<?php 
     } 
    } 
?> 

Я просто хочу, чтобы сравнить два значения массива и отображение галочки, когда они равны, но тут показывает 16 флажка вместо четырех, как я я использую два для циклов, и я этого не хочу.

$ this-> GetList массив, который возвращается из базы данных

+0

Что представляют собой 'getList' и' listOfdealers'? Который * должен * относиться к генерации флажков? –

+0

Постарайтесь как можно больше отделить свою логику от презентации, сделать код более удобным для чтения и управления :) – IEnumerable

+0

нам нужно знать логик позади -> getList и -> listOfdealears. Гнездо foreach не кажется правильным с первого взгляда, но я могу ошибаться .. просто дайте образец этих объектов (print_r) –

ответ

1

использование

foreach (array_expression as $key => $value) 
    statement 

из foreach-manual page

так что вы можете использовать один и тот же индекс для получения значений

<?php 
foreach($this->getlist as $index => $value) 
{ 
$list = $this->listOfdealers[$index]; 
?><tr> 
     <td> 
      <input type="checkbox" name="list[]" value=<?php 
       echo $list->nList ?> 
<?php if($value->nSubList==$list->nList){echo 'checked'; } ?> /> 
     <label for="list_32"><?php echo $list->nList?> 
     </label> 
     </td> 
</tr> 
<?php 
} 
?> 
0

Вы можете использовать in_array функцию в PHP для сравнения значений массива. Вы можете проверить на http://php.net/manual/en/function.in-array.php для получения дополнительной информации. Надеюсь это поможет.

0

Пожалуйста найти решение ниже для вашей проблемы. Это пример кода с использованием in_array и array_diff. Вы можете использовать любую из функций.

<?php 
$var1 = array("test","test1","test2"); 
$var2 = array("test","test1","test2","test3"); 
$var3 = array(); 

foreach($var1 as $i) 
{ 
    if(in_array($i,$var2)) 
    { 
     //save the value 
     array_push($var3,$i); 
    } 
    else 
    { 
     continue; 
    } 
} 
//var3 will contain the values that are common in two arrays 

//Another Method using array_diff 
$array1 = array("a" => "green", "red", "blue", "red"); 
$array2 = array("b" => "green", "yellow", "red"); 
$result = array_diff($array1, $array2); 

print_r($result); 

?> 
Смежные вопросы