lithium\util\Set::append PHP Метод

append() публичный статический Метод

Add the keys/values in $array2 that are not found in $array onto the end of $array.
public static append ( array $array, array $array2 ) : array
$array array Original array.
$array2 array Second array to add onto the original.
Результат array An array containing all the keys of the second array not already present in the first.
    public static function append(array $array, array $array2)
    {
        $arrays = func_get_args();
        $array = array_shift($arrays);
        foreach ($arrays as $array2) {
            if (!$array && $array2) {
                $array = $array2;
                continue;
            }
            foreach ($array2 as $key => $value) {
                if (!array_key_exists($key, $array)) {
                    $array[$key] = $value;
                } elseif (is_array($value)) {
                    $array[$key] = static::append($array[$key], $array2[$key]);
                }
            }
        }
        return $array;
    }

Usage Example

Пример #1
0
	public function testAppend() {
		$array1 = array('ModelOne' => array(
			'id' => 1001, 'field_one' => 'a1.m1.f1', 'field_two' => 'a1.m1.f2'
		));
		$array2 = array('ModelTwo' => array(
			'id' => 1002, 'field_one' => 'a2.m2.f1', 'field_two' => 'a2.m2.f2'
		));

		$result = Set::append($array1, $array2);

		$this->assertIdentical($result, $array1 + $array2);

		$array3 = array('ModelOne' => array(
			'id' => 1003, 'field_one' => 'a3.m1.f1',
			'field_two' => 'a3.m1.f2', 'field_three' => 'a3.m1.f3'
		));
		$result = Set::append($array1, $array3);

		$expected = array('ModelOne' => array(
			'id' => 1001, 'field_one' => 'a1.m1.f1',
			'field_two' => 'a1.m1.f2', 'field_three' => 'a3.m1.f3'
		));
		$this->assertIdentical($expected, $result);

		$array1 = array(
			array('ModelOne' => array(
				'id' => 1001, 'field_one' => 's1.0.m1.f1', 'field_two' => 's1.0.m1.f2'
			)),
			array('ModelTwo' => array(
				'id' => 1002, 'field_one' => 's1.1.m2.f2', 'field_two' => 's1.1.m2.f2'
			))
		);
		$array2 = array(
			array('ModelOne' => array(
				'id' => 1001, 'field_one' => 's2.0.m1.f1', 'field_two' => 's2.0.m1.f2'
			)),
			array('ModelTwo' => array(
				'id' => 1002, 'field_one' => 's2.1.m2.f2', 'field_two' => 's2.1.m2.f2'
			))
		);

		$result = Set::append($array1, $array2);
		$this->assertIdentical($result, $array1);

		$array3 = array(array('ModelThree' => array(
			'id' => 1003, 'field_one' => 's3.0.m3.f1', 'field_two' => 's3.0.m3.f2'
		)));

		$result = Set::append($array1, $array3);
		$expected = array(
			array(
				'ModelOne' => array(
					'id' => 1001, 'field_one' => 's1.0.m1.f1', 'field_two' => 's1.0.m1.f2'
				),
				'ModelThree' => array(
					'id' => 1003, 'field_one' => 's3.0.m3.f1', 'field_two' => 's3.0.m3.f2'
				)
			),
			array('ModelTwo' => array(
				'id' => 1002, 'field_one' => 's1.1.m2.f2', 'field_two' => 's1.1.m2.f2'
			))
		);
		$this->assertIdentical($expected, $result);

		$result = Set::append($array1, array());
		$this->assertIdentical($result, $array1);

		$result = Set::append($array1, $array2);
		$this->assertIdentical($result, $array1 + $array2);

		$result = Set::append(array(), array('2'));
		$this->assertIdentical(array('2'), $result);
	}