#6344: msort function added to the Set class to help with array sorting using multiple column parameters ----------------------------+----------------------------------------------- Reporter: ebadedude | Owner: Type: Enhancement | Status: new Priority: Medium | Milestone: 1.3.x.x Component: Core Libs | Version: 1.2 Final Severity: Normal | Resolution: Keywords: | Php_version: n/a Cake_version: | ----------------------------+----------------------------------------------- Comment (by ebadedude):
Added Test Cases {{{ /** * testMsort method * * @access public * @return void */ function testMsort() { $a = array( 0 => array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate', 'pettype' => 'dog'))), 1 => array('Person' => array('name' => 'Mark'), 'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'python'))), 2 => array('Person' => array('name' => 'Tracy'),'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'cat'))), 3 => array('Person' => array('name' => 'Joan'), 'Friend' => array(array('name' => 'Geoffrey', 'pettype' => 'hampster'))) ); $b = array( 0 => array('Person' => array('name' => 'Joan'), 'Friend' => array(array('name' => 'Geoffrey', 'pettype' => 'hampster'))), 1 => array('Person' => array('name' => 'Tracy'),'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'cat'))), 2 => array('Person' => array('name' => 'Mark'), 'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'python'))), 3 => array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate', 'pettype' => 'dog'))) ); $a = Set::msort($a, array('{n}.Friend.{n}.name' => 'asc', '{n}.Friend.{n}.pettype' => 'asc')); $this->assertIdentical($a, $b); $b = array( 0 => array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate', 'pettype' => 'dog'))), 1 => array('Person' => array('name' => 'Mark'), 'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'python'))), 2 => array('Person' => array('name' => 'Tracy'),'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'cat'))), 3 => array('Person' => array('name' => 'Joan'), 'Friend' => array(array('name' => 'Geoffrey', 'pettype' => 'hampster'))) ); $a = array( 0 => array('Person' => array('name' => 'Joan'), 'Friend' => array(array('name' => 'Geoffrey', 'pettype' => 'hampster'))), 1 => array('Person' => array('name' => 'Tracy'),'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'cat'))), 2 => array('Person' => array('name' => 'Mark'), 'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'python'))), 3 => array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate', 'pettype' => 'dog'))) ); $a = Set::msort($a, array('{n}.Friend.{n}.name' => 'desc', '{n}.Friend.{n}.pettype' => 'desc')); $this->assertIdentical($a, $b); $a = array( 0 => array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate', 'pettype' => 'dog'))), 1 => array('Person' => array('name' => 'Mark'), 'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'python'))), 2 => array('Person' => array('name' => 'Tracy'),'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'cat'))), 3 => array('Person' => array('name' => 'Joan'), 'Friend' => array(array('name' => 'Geoffrey', 'pettype' => 'hampster'))) ); $b = array( 0 => array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate', 'pettype' => 'dog'))), 1 => array('Person' => array('name' => 'Joan'), 'Friend' => array(array('name' => 'Geoffrey', 'pettype' => 'hampster'))), 2 => array('Person' => array('name' => 'Mark'), 'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'python'))), 3 => array('Person' => array('name' => 'Tracy'),'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'cat'))) ); $a = Set::msort($a, array('{n}.Person.name' => 'asc', '{n}.Friend.{n}.name' => 'desc')); $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::msort($a, array('{n}.{n}' => '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::msort($a, array('{n}' => 'asc')); $this->assertIdentical($a, $b); $a = array( 0 => array('Person' => array('name' => 'Jeff')), 1 => array('Shirt' => array('color' => 'black')) ); $b = array( 0 => array('Shirt' => array('color' => 'black')), 1 => array('Person' => array('name' => 'Jeff')), ); $a = Set::msort($a, array('{n}.Person.name' => 'asc')); $this->assertIdentical($a, $b); } }}} -- Ticket URL: <https://trac.cakephp.org/ticket/6344#comment:1> CakePHP : The Rapid Development Framework for PHP <https://trac.cakephp.org/> Cake is a rapid development framework for PHP which uses commonly known design patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "tickets cakephp" group. To post to this group, send email to tickets-cakephp@googlegroups.com To unsubscribe from this group, send email to tickets-cakephp+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/tickets-cakephp?hl=en -~----------~----~----~----~------~----~------~--~---