PHP跳过另一个数组中的数组项

时间:2014-04-30 13:38:46

标签: php arrays loops foreach

所有

我有一个数组列表,其中我有城市名称 和 在第二个数组列表中,我有城市名称,我想将它们显示为已检查项目。

我试图做的是

<?php

$mainArr = array("New York", "LA", "London", "Tokyo", "Paris", "Rome");

$checkedArr = array("New York", "Tokyo");

foreach( $mainArr as $main ) 
{
   foreach( $checkedArr as $check ) {
     if( $check == $main ) {
        echo '<input type="checkbox" name="city" value="$main" checked />', $main;
      }else {
         echo '<input type="checkbox" name="city" value="$main" />', $main;
      }
   }
} 
?>

但是这显示了重复的值。我怎么摆脱这个?我不想要重复的价值观。

应该检查纽约和东京 和 其余的应该是一样的。

由于

1 个答案:

答案 0 :(得分:3)

使用in_array:

foreach($mainArr as $main) {
    if (in_array($main, $checkedArr)) {
        echo '<input type="checkbox" name="city" value="$main" checked />', $main;
    } 
    else {
        echo '<input type="checkbox" name="city" value="$main" />', $main;
    }
}

在没有代码重复的情况下缩短一点:

foreach($mainArr as $main) {
    $checked = in_array($main, $checkArr) ? 'checked' : '' ;
    echo '<input type="checkbox" name="city" value="'.$main.'" '.$checked.' /> '.$main;
}