/** * Merge arrays * * @param ArrayObjectA $Array * @return \ArrayObjectA */ public function merge(ArrayObjectA $Array) { $this->exchangeArray(array_merge($this->getArrayCopy(), $Array->getArrayCopy())); return $this; }
/** * Test arraySort integrity */ public function testMultisort() { $expected = array('item1' => array('weight' => 4, 'diff' => array(1 => 10, 7 => -5, 30 => 0)), 'item2' => array('weight' => 3, 'diff' => array(1 => 10, 7 => -5, 30 => 0)), 'item3' => array('weight' => 3, 'diff' => array(1 => 8, 7 => -5, 30 => 0)), 'item4' => array('weight' => 3, 'diff' => array(1 => 8, 7 => -10, 30 => 0)), 'item5' => array('weight' => 3, 'diff' => array(1 => 8, 7 => -10, 30 => -1)), 'item6' => array('weight' => 2, 'diff' => array(1 => 3, 7 => 4, 30 => 5)), 'item7' => array('weight' => 1, 'diff' => array(1 => 30, 7 => 40, 30 => 50)), 'item8' => array('weight' => 1, 'diff' => array(1 => false, 7 => false, 30 => false))); $test = $expected; $ashuffle = function (&$array) { $keys = array_keys($array); shuffle($keys); $array = array_merge(array_flip($keys), $array); return true; }; $ashuffle($test); $Test = new ArrayObjectA($test); $params = array('weight' => 'desc', 'diff.1' => 'desc', 'diff.7' => 'desc', 'diff.30' => 'desc'); $this->assertNotSame($expected, $Test->getArrayCopy()); $this->assertSame($expected, $Test->multisort($params)->getArrayCopy()); $expected = array(1, 2, 3, 4, 5, 6, 7, 8, 9); $test = $expected; shuffle($test); $Test = new ArrayObjectA($test); $params = 'asc'; $this->assertNotSame($expected, $Test->getArrayCopy()); $this->assertSame($expected, $Test->multisort($params)->getArrayCopy()); $expected = array('item1' => 1, 'item2' => 2, 'item3' => 3, 'item4' => 4, 'item5' => 5); $test = $expected; $ashuffle($test); if ($test === $expected) { $ashuffle($test); } $Test = new ArrayObjectA($test); $params = 'asc'; $this->assertNotSame($expected, $Test->getArrayCopy()); $this->assertSame($expected, $Test->multisort($params)->getArrayCopy()); }