Array management, if done right, can be a very powerful and useful tool for building smarter, more optimized code. CakePHP offers a very useful set of static utilities in the Set class that allow you to do just that.
CakePHP's Set class can be called from any model or controller in the same way Inflector is called. Example: :phpSet::combine()
.
2.2 The Set class has been deprecated in 2.2 in favour of the :phpHash
class. It offers a more consistent interface and API.
The Path syntax is used by (for example) sort, and is used to define a path.
Usage example (using :phpSet::sort()
):
<?php
$a = array(
0 => array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate'))),
1 => array('Person' => array('name' => 'Tracy'),'Friend' => array(array('name' => 'Lindsay'))),
2 => array('Person' => array('name' => 'Adam'),'Friend' => array(array('name' => 'Bob')))
);
$result = Set::sort($a, '{n}.Person.name', 'asc');
/* result now looks like
array(
0 => array('Person' => array('name' => 'Adam'),'Friend' => array(array('name' => 'Bob'))),
1 => array('Person' => array('name' => 'Jeff'), 'Friend' => array(array('name' => 'Nate'))),
2 => array('Person' => array('name' => 'Tracy'),'Friend' => array(array('name' => 'Lindsay')))
);
*/
As you can see in the example above, some things are wrapped in {}'s, others not. In the table below, you can see which options are available.
Expression | Definition |
---|---|
{n} | Represents a numeric key |
{s} | Represents a string |
Foo | Any string (without enclosing brackets) is treated like a string literal. |
{[a-z]+} | Any string enclosed in brackets (besides {n} and {s}) is interpreted as a regular expression. |