lithium\util\Set::diff PHP Method

diff() public static method

Computes the difference between two arrays.
public static diff ( array $val1, array $val2 ) : array
$val1 array First value.
$val2 array Second value.
return array Computed difference.
    public static function diff(array $val1, array $val2)
    {
        if (!$val1 || !$val2) {
            return $val2 ?: $val1;
        }
        $out = array();
        foreach ($val1 as $key => $val) {
            $exists = isset($val2[$key]);
            if ($exists && $val2[$key] !== $val || !$exists) {
                $out[$key] = $val;
            }
            unset($val2[$key]);
        }
        foreach ($val2 as $key => $val) {
            if (!isset($out[$key])) {
                $out[$key] = $val;
            }
        }
        return $out;
    }

Usage Example

Beispiel #1
0
	public function testDiff() {
		$a = array(array('name' => 'main'), array('name' => 'about'));
		$b = array(array('name' => 'main'), array('name' => 'about'), array('name' => 'contact'));

		$result = Set::diff($a, $b);
		$expected = array(2 => array('name' => 'contact'));
		$this->assertIdentical($expected, $result);

		$result = Set::diff($a, array());
		$expected = $a;
		$this->assertIdentical($expected, $result);

		$result = Set::diff(array(), $b);
		$expected = $b;
		$this->assertIdentical($expected, $result);

		$b = array(array('name' => 'me'), array('name' => 'about'));

		$result = Set::diff($a, $b);
		$expected = array(array('name' => 'main'));
		$this->assertIdentical($expected, $result);
	}
All Usage Examples Of lithium\util\Set::diff