我正在从数据库中获取数组中的值
<?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 个复选框而不是四个,因为我使用两个 for 循环,我不希望这样。
$this->getlist 是一个从数据库返回的数组
使用
foreach (array_expression as $key => $value)
statement
从手册页
因此,您可以使用相同的索引来获取值
<?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
}
?>
你可以在 php 中使用in_array函数来比较数组值。您可以在 http://php.net/manual/en/function.in-array.php 查看更多详细信息。希望这有帮助。
请在下面找到适合您问题的解决方案。它是使用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);
?>