sort() public static method

Sorts an array by any value, determined by a Set-compatible path.
public static sort ( array $data, string $path, string $dir = 'asc' ) : array
$data array
$path string A `Set`-compatible path to the array value.
$dir string Either `'asc'` (the default) or `'desc'`.
return array
Beispiel #1
0
	public function testSort() {
		$a = array(
			array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate'))),
			array('Person' => array('name' => 'Tracy'), 'Friend' => array(
				array('name' => 'Lindsay')
			))
		);
		$b = array(
			array('Person' => array('name' => 'Tracy'),'Friend' => array(
				array('name' => 'Lindsay')
			)),
			array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate')))
		);
		$a = Set::sort($a, '/Friend/name', 'asc');
		$this->assertIdentical($a, $b);

		$b = array(
			array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate'))),
			array('Person' => array('name' => 'Tracy'), 'Friend' => array(
				array('name' => 'Lindsay')
			))
		);
		$a = array(
			array('Person' => array('name' => 'Tracy'), 'Friend' => array(
				array('name' => 'Lindsay')
			)),
			array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate')))
		);
		$a = Set::sort($a, '/Friend/name', 'desc');
		$this->assertIdentical($a, $b);

		$a = array(
			array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate'))),
			array('Person' => array('name' => 'Tracy'), 'Friend' => array(
				array('name' => 'Lindsay')
			)),
			array('Person' => array('name' => 'Adam'), 'Friend' => array(array('name' => 'Bob')))
		);
		$b = array(
			array('Person' => array('name' => 'Adam'),'Friend' => array(array('name' => 'Bob'))),
			array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate'))),
			array('Person' => array('name' => 'Tracy'), 'Friend' => array(
				array('name' => 'Lindsay')
			))
		);
		$a = Set::sort($a, '/Person/name', 'asc');
		$this->assertIdentical($a, $b);

		$a = array(array(7, 6, 4), array(3, 4, 5), array(3, 2, 1));
		$b = array(array(3, 2, 1), array(3, 4, 5), array(7, 6, 4));

		$a = Set::sort($a, '/', 'asc');
		$this->assertIdentical($a, $b);

		$a = array(array(7, 6, 4), array(3, 4, 5), array(3, 2, array(1, 1, 1)));
		$b = array(array(3, 2, array(1, 1, 1)), array(3, 4, 5), array(7, 6, 4));

		$a = Set::sort($a, '/.', 'asc');
		$this->assertIdentical($a, $b);

		$a = array(
			array('Person' => array('name' => 'Jeff')),
			array('Shirt' => array('color' => 'black'))
		);
		$b = array(array('Person' => array('name' => 'Jeff')));
		$a = Set::sort($a, '/Person/name', 'asc');
		$this->assertIdentical($a, $b);
	}