--TEST-- Test of the *intersect* bunch of functions (both assoc and non-assoc) --FILE-- priv_member = $val; $this->public_member = $val; } static function comp_func_cr($a, $b) { if ($a->priv_member === $b->priv_member) return 0; return ($a->priv_member > $b->priv_member)? 1:-1; } function __toString() { return "Object"; } } function comp_func($a, $b) { if ($a === $b) return 0; return ($a > $b)? 1:-1; } function comp_func_cr($a, $b) { if ($a->public_member === $b->public_member) return 0; return ($a->public_member > $b->public_member)? 1:-1; } $a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),); $b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr( 3), 1=> new cr(4), 2 => new cr(-15),); /* array_intersect() */ echo "begin ------------ array_intersect() ----------------------------\n"; echo '$a='.var_export($a,TRUE).";\n"; echo '$b='.var_export($b,TRUE).";\n"; echo 'var_dump(array_intersect($a, $b);'."\n"; var_dump(array_intersect($a, $b)); echo "end ------------ array_intersect() ----------------------------\n"; /* array_uintersect() */ echo "begin ------------ array_uintersect() ---------------------------\n"; echo '$a='.var_export($a,TRUE).";\n"; echo '$b='.var_export($b,TRUE).";\n"; echo 'var_dump(array_uintersect($a, $b, "comp_func_cr"));'."\n"; var_dump(array_uintersect($a, $b, "comp_func_cr")); echo "end ------------ array_uintersect() ---------------------------\n"; /* array_intersect_assoc() */ echo "begin ------------ array_intersect_assoc() ----------------------\n"; echo '$a='.var_export($a,TRUE).";\n"; echo '$b='.var_export($b,TRUE).";\n"; echo 'var_dump(array_intersect_assoc($a, $b));'."\n"; var_dump(array_intersect_assoc($a, $b)); echo "end ------------ array_intersect_assoc() ----------------------\n"; /* array_uintersect_assoc() */ echo "begin ------------ array_uintersect_assoc() ---------------------\n"; echo '$a='.var_export($a,TRUE).";\n"; echo '$b='.var_export($b,TRUE).";\n"; echo 'var_dump(array_uintersect_assoc($a, $b, "comp_func_cr"));'."\n"; var_dump(array_uintersect_assoc($a, $b, "comp_func_cr")); echo "end ------------ array_uintersect_assoc() ---------------------\n"; /* array_intersect_uassoc() */ echo "begin ------------ array_intersect_uassoc() ---------------------\n"; echo '$a='.var_export($a,TRUE).";\n"; echo '$b='.var_export($b,TRUE).";\n"; echo 'var_dump(array_intersect_uassoc($a, $b, "comp_func"));'."\n"; var_dump(array_intersect_uassoc($a, $b, "comp_func")); echo "end ------------ array_intersect_uassoc() ---------------------\n"; /* array_uintersect_uassoc() - with ordinary function */ echo "begin ------------ array_uintersect_uassoc() with ordinary func -\n"; echo '$a='.var_export($a,TRUE).";\n"; echo '$b='.var_export($b,TRUE).";\n"; echo 'var_dump(array_uintersect_uassoc($a, $b, "comp_func_cr", "comp_func"));'."\n"; var_dump(array_uintersect_uassoc($a, $b, "comp_func_cr", "comp_func")); echo "end ------------ array_uintersect_uassoc() with ordinary func -\n"; /* array_uintersect_uassoc() - by method call */ echo "begin ------------ array_uintersect_uassoc() with method --------\n"; echo '$a='.var_export($a,TRUE).";\n"; echo '$b='.var_export($b,TRUE).";\n"; echo 'var_dump(array_uintersect_uassoc($a, $b, array("cr", "comp_func_cr"), "comp_func"));'."\n"; var_dump(array_uintersect_uassoc($a, $b, array("cr", "comp_func_cr"), "comp_func")); echo "end ------------ array_uintersect_uassoc() with method --------\n"; ?> --EXPECTF-- begin ------------ array_intersect() ---------------------------- $a=array ( '0.1' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 12, 'public_member' => 12, )), 0 => cr::__set_state(array( 'priv_member' => 23, 'public_member' => 23, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); $b=array ( '0.2' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 22, 'public_member' => 22, )), 0 => cr::__set_state(array( 'priv_member' => 3, 'public_member' => 3, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); var_dump(array_intersect($a, $b); array(5) { ["0.1"]=> object(cr)#%d (2) { ["priv_member:private"]=> int(9) ["public_member"]=> int(9) } ["0.5"]=> object(cr)#%d (2) { ["priv_member:private"]=> int(12) ["public_member"]=> int(12) } [0]=> object(cr)#%d (2) { ["priv_member:private"]=> int(23) ["public_member"]=> int(23) } [1]=> object(cr)#%d (2) { ["priv_member:private"]=> int(4) ["public_member"]=> int(4) } [2]=> object(cr)#%d (2) { ["priv_member:private"]=> int(-15) ["public_member"]=> int(-15) } } end ------------ array_intersect() ---------------------------- begin ------------ array_uintersect() --------------------------- $a=array ( '0.1' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 12, 'public_member' => 12, )), 0 => cr::__set_state(array( 'priv_member' => 23, 'public_member' => 23, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); $b=array ( '0.2' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 22, 'public_member' => 22, )), 0 => cr::__set_state(array( 'priv_member' => 3, 'public_member' => 3, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); var_dump(array_uintersect($a, $b, "comp_func_cr")); array(3) { ["0.1"]=> object(cr)#%d (2) { ["priv_member:private"]=> int(9) ["public_member"]=> int(9) } [1]=> object(cr)#%d (2) { ["priv_member:private"]=> int(4) ["public_member"]=> int(4) } [2]=> object(cr)#%d (2) { ["priv_member:private"]=> int(-15) ["public_member"]=> int(-15) } } end ------------ array_uintersect() --------------------------- begin ------------ array_intersect_assoc() ---------------------- $a=array ( '0.1' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 12, 'public_member' => 12, )), 0 => cr::__set_state(array( 'priv_member' => 23, 'public_member' => 23, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); $b=array ( '0.2' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 22, 'public_member' => 22, )), 0 => cr::__set_state(array( 'priv_member' => 3, 'public_member' => 3, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); var_dump(array_intersect_assoc($a, $b)); array(4) { ["0.5"]=> object(cr)#%d (2) { ["priv_member:private"]=> int(12) ["public_member"]=> int(12) } [0]=> object(cr)#%d (2) { ["priv_member:private"]=> int(23) ["public_member"]=> int(23) } [1]=> object(cr)#%d (2) { ["priv_member:private"]=> int(4) ["public_member"]=> int(4) } [2]=> object(cr)#%d (2) { ["priv_member:private"]=> int(-15) ["public_member"]=> int(-15) } } end ------------ array_intersect_assoc() ---------------------- begin ------------ array_uintersect_assoc() --------------------- $a=array ( '0.1' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 12, 'public_member' => 12, )), 0 => cr::__set_state(array( 'priv_member' => 23, 'public_member' => 23, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); $b=array ( '0.2' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 22, 'public_member' => 22, )), 0 => cr::__set_state(array( 'priv_member' => 3, 'public_member' => 3, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); var_dump(array_uintersect_assoc($a, $b, "comp_func_cr")); array(2) { [1]=> object(cr)#%d (2) { ["priv_member:private"]=> int(4) ["public_member"]=> int(4) } [2]=> object(cr)#%d (2) { ["priv_member:private"]=> int(-15) ["public_member"]=> int(-15) } } end ------------ array_uintersect_assoc() --------------------- begin ------------ array_intersect_uassoc() --------------------- $a=array ( '0.1' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 12, 'public_member' => 12, )), 0 => cr::__set_state(array( 'priv_member' => 23, 'public_member' => 23, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); $b=array ( '0.2' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 22, 'public_member' => 22, )), 0 => cr::__set_state(array( 'priv_member' => 3, 'public_member' => 3, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); var_dump(array_intersect_uassoc($a, $b, "comp_func")); array(4) { ["0.5"]=> object(cr)#%d (2) { ["priv_member:private"]=> int(12) ["public_member"]=> int(12) } [0]=> object(cr)#%d (2) { ["priv_member:private"]=> int(23) ["public_member"]=> int(23) } [1]=> object(cr)#%d (2) { ["priv_member:private"]=> int(4) ["public_member"]=> int(4) } [2]=> object(cr)#%d (2) { ["priv_member:private"]=> int(-15) ["public_member"]=> int(-15) } } end ------------ array_intersect_uassoc() --------------------- begin ------------ array_uintersect_uassoc() with ordinary func - $a=array ( '0.1' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 12, 'public_member' => 12, )), 0 => cr::__set_state(array( 'priv_member' => 23, 'public_member' => 23, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); $b=array ( '0.2' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 22, 'public_member' => 22, )), 0 => cr::__set_state(array( 'priv_member' => 3, 'public_member' => 3, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); var_dump(array_uintersect_uassoc($a, $b, "comp_func_cr", "comp_func")); array(2) { [1]=> object(cr)#%d (2) { ["priv_member:private"]=> int(4) ["public_member"]=> int(4) } [2]=> object(cr)#%d (2) { ["priv_member:private"]=> int(-15) ["public_member"]=> int(-15) } } end ------------ array_uintersect_uassoc() with ordinary func - begin ------------ array_uintersect_uassoc() with method -------- $a=array ( '0.1' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 12, 'public_member' => 12, )), 0 => cr::__set_state(array( 'priv_member' => 23, 'public_member' => 23, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); $b=array ( '0.2' => cr::__set_state(array( 'priv_member' => 9, 'public_member' => 9, )), '0.5' => cr::__set_state(array( 'priv_member' => 22, 'public_member' => 22, )), 0 => cr::__set_state(array( 'priv_member' => 3, 'public_member' => 3, )), 1 => cr::__set_state(array( 'priv_member' => 4, 'public_member' => 4, )), 2 => cr::__set_state(array( 'priv_member' => -15, 'public_member' => -15, )), ); var_dump(array_uintersect_uassoc($a, $b, array("cr", "comp_func_cr"), "comp_func")); array(2) { [1]=> object(cr)#%d (2) { ["priv_member:private"]=> int(4) ["public_member"]=> int(4) } [2]=> object(cr)#%d (2) { ["priv_member:private"]=> int(-15) ["public_member"]=> int(-15) } } end ------------ array_uintersect_uassoc() with method --------