在php中匹配2个数组

时间:2013-06-15 10:28:28

标签: php codeigniter codeigniter-url

我的两个数组值是

1)

Array (
               [0] => School Children 
               [1] => Vocational Training Centre
               [2] => Admission Fee
          ) 

2)入场费

Array (
              [0] => School Children
              [1] => World Ten K
              [2] => Vocational Training Centre
              [3] => Van travel
              [4] => Admission Fee
        ) 

这里他们的密钥是不同的,如果两者都是mathing,只检查我的复选框,否则不会检查它们。

我尝试使用array_search但没有用,有些情况in_array

$main表示所有值,$temp_imp是来自数据库的值

<?php 
    $i=0;

    foreach($prj_data as $prj_pop){
        $main[]=$prj_pop->name;
?>
    <br/><br/>
    <input type="checkbox" class="checkbox_project" value="<?php echo  $prj_pop->name;?>"
<?php 
        if (array_intersect($temp_imp, $main))
        {
            echo 'checked="true"';
        } 
?>
<?php
        echo $prj_pop->name;
        $i++;
    }
?>

5 个答案:

答案 0 :(得分:0)

哦,我想我终于明白了你的要求!你想做这样的事情:

<?php
foreach($array1 as $a){
    if( in_array($a, $array2))){
        //Value in both

    }
    else{
        //Value only in 1st array   
    }
}
?>

答案 1 :(得分:0)

这是一个简单的函数,用于查看一个数组的值是否与另一个数组的值匹配。在这种情况下,如果TRUE中存在所有$array1值,则会返回$array2;如果FALSE找到$array1中不存在$array2的值,则返回function array_match($array1, $array2) { foreach ($array1 as $value) { if (!in_array($value, $array2)) { return FALSE; } } return TRUE; } {1}}。

{{1}}

答案 2 :(得分:0)

如果要检查是否相等,请尝试此操作:

$array1 = array(
    'School Children',
    'Vocational Training Centre',
    'Admission Fee'
);

$array2 = array(
    'School Children',
    'World Ten K',
    'Vocational Training Centre',
    'Van travel',
    'Admission Fee'
);

sort($array1);
sort($array2);

if (md5(serialize($array1)) === md5(serialize($array2))) {
    echo 'equal';
}
else {
    echo 'not equal';
}

答案 3 :(得分:0)

猜测你想要一个包含给定数组中值的数组,你可以使用array_intersect(),因为这个数组有“无键”,但只有值。

答案 4 :(得分:0)

最简单的方法是使用array_intersect php函数并检查结果:http://php.net/manual/en/function.array-intersect.php