0

我从数据库中获取值作为数组

<?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 个复选框而不是 4 个,因为我使用了两个 for 循环,我不想要那个。

$this->getlist 是一个从数据库返回的数组

4

3 回答 3

1

采用

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

来自 foreach 手册页

因此您可以使用相同的索引来获取值

<?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
}
?>
于 2012-06-28T05:46:45.327 回答
0

您可以在 php 中使用 in_array 函数来比较数组值。您可以在http://php.net/manual/en/function.in-array.php上查看更多详细信息。希望这可以帮助。

于 2012-06-28T05:44:52.080 回答
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);

?>
于 2012-06-28T05:52:33.243 回答