w3resource

PHP Array Exercises : Set union of two arrays

PHP Array: Exercise-48 with Solution

Write a PHP function to set union of two arrays.

Sample Solution:

PHP Code:

<?php
function array_union($x, $y)
   { 
      $aunion=  array_merge(
            array_intersect($x, $y),
            array_diff($x, $y),     
            array_diff($y, $x)      
        );
        return $aunion;
   }
$a = array(1, 2, 3, 4);
$b = array(2, 3, 4, 5, 6);
print_r(array_union($a, $b));
?>

Sample Output:

Array                                                       
(                                                           
    [0] => 2                                                
    [1] => 3                                                
    [2] => 4                                                
    [3] => 1                                                
    [4] => 5                                                
    [5] => 6                                                
) 

Flowchart:

Flowchart: PHP - Set union of two arrays

PHP Code Editor:

Contribute your code and comments through Disqus.

Previous: Write a PHP function to get an array with the first key and value.
Next: Write a PHP script to get an array containing all the entries of an array which have the keys that are present in another array.

What is the difficulty level of this exercise?



PHP: Tips of the Day

Convert a PHP object to an associative array

Just typecast it

$array = (array) $yourObject;

From Arrays:

If an object is converted to an array, the result is an array whose elements are the object's properties. The keys are the member variable names, with a few notable exceptions: integer properties are unaccessible; private variables have the class name prepended to the variable name; protected variables have a '*' prepended to the variable name.These prepended values have null bytes on either side.

Example: Simple Object

$object = new StdClass;
$object->foo = 1;
$object->bar = 2;

var_dump( (array) $object );

Output:

array(2) {
  'foo' => int(1)
  'bar' => int(2)
}

Example: Complex Object

class Foo
{
    private $foo;
    protected $bar;
    public $baz;

    public function __construct()
    {
        $this->foo = 1;
        $this->bar = 2;
        $this->baz = new StdClass;
    }
}

var_dump( (array) new Foo );

Output (with \0s edited in for clarity):

array(3) {
  '\0Foo\0foo' => int(1)
  '\0*\0bar' => int(2)
  'baz' => class stdClass#2 (0) {}
}

Output with var_export instead of var_dump:

array (
  '' . "\0" . 'Foo' . "\0" . 'foo' => 1,
  '' . "\0" . '*' . "\0" . 'bar' => 2,
  'baz' =>
  stdClass::__set_state(array(
  )),
)

Typecasting this way will not do deep casting of the object graph and you need to apply the null bytes (as explained in the manual quote) to access any non-public attributes. So this works best when casting StdClass objects or objects with only public properties. For quick and dirty (what you asked for) it's fine.

Also see this in-depth blog post:

  • Fast PHP Object to Array conversion

Ref : https://bit.ly/3fqiV2E