代码之家  ›  专栏  ›  技术社区  ›  Haim Evgi

比较数组:第二个数组中包含一个数组(key+value)

  •  2
  • Haim Evgi  · 技术社区  · 14 年前

    (不需要相等,只需检查 关键与价值 在一个数组中是在第二个数组中)

    到目前为止,我做的最简单的事情是:

    function checkSameValues($a, $b){
    
            foreach($a as $k1 => $v1){                                  
                if($v1 && $v1 != $b[$k1]){
                    return false;
                    break;                                      
                }
            }
            return true;
        }
    

    谢谢

    4 回复  |  直到 14 年前
        1
  •  3
  •   Toto    14 年前

    $array1 = array("a" => "green", "b" => "blue", "c" => "white", "d" => "red");
    $array2 = array("a" => "green", "b" => "blue", "d" => "red");
    $result = array_diff_assoc($array2, $array1);
    if (!count($result)) echo "array2 is contained in array";
    
        2
  •  1
  •   Cristian    14 年前

    那。。。

    $intersect = array_intersect_assoc($a, $b);
    if( count($intersect) == count($b) ){
        echo "yes, it's inside";
    }
    else{
        echo "no, it's not.";
    }
    

    array_intersect_assoc

        3
  •  0
  •   Marcx    14 年前
    function checkSameValues($a, $b){
       if ( in_array($a,$b) ) return true;
       else return false;
    }
    
        4
  •  0
  •   Dennis Haarbrink    14 年前

    这显然只检查depth=1,但可以很容易地调整为递归:

    // check if $a2 is contained in $a1
    function checkSameValues($a1, $a2)
    {
        foreach($a1 as $element)
        {
            if($element == $a2) return true;
        }
        return false;
    }
    
    $a1 = array('foo' => 'bar', 'bar' => 'baz');
    $a2 = array('el' => 'one', 'another' => $a1);
    
    var_dump(checkSameValues($a2, $a1)); // true