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
        }
    }
?>

2 つの配列値を比較し、それらが等しい場合にチェックされたチェックボックスを表示したいだけですが、ここでは 2 つの for ループを使用しているため、4 つではなく 16 個のチェックボックスが表示されています。

$this->getlist はデータベースから返される配列です

4

3 に答える 3

1

使用する

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

foreach-manual ページから

したがって、値を取得するために同じインデックスを使用できます

<?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 に答える