Friday, April 24, 2009

Re: Set::extract and Set::combine - help needed

Some of what you want to do is possible with the set class; other bits
would be more complicated.

With this approach, the best you could achieve would be a nasty mess
of array_combine, array_keys and various set calls, all nested and
difficult to follow.

Although I love the Set class with all my heart, this is one instance
where I believe a simple loop would be easier to code, easier to
maintain, and ultimately more efficient for the server and the coder.

foreach($data as $i => $bacon) {
$statusHistory = array();
foreach($bacon['StatusHistory'] as $eggs) {
$statusHistory[$eggs['StatusName']['text']] = array(
'since' => $eggs['since'],
'Changer' => $ggs['Changer']['full_name']
);
}
$data[$i]['StatusHistory'] = $statusHistory;
}

Job done!

hth
grigri

On Apr 24, 9:16 am, "Faza" <f...@ansi.pl> wrote:
> Hello again,
>
> this is the array I'm working on:
>
> Array
> (
>     [0] => Array
>         (
>             [Design] => Array
>                 (
>                     [id] => 39
>                     [design_no] => 1
>                     [job_title] => gjgfjyjgyjf
>                     [expected_date] => 2009-04-14
>                     [customer_id] => 5
>                     [designer_id] => 15
>                     [status_id] => 1
>                     [post_date] => 2009-04-23 13:11:23.247263+02
>                     [author_id] => 73
>                 )
>
>             [Author] => Array
>                 (
>                     [full_name] => SKP Admin
>                     [id] => 73
>                 )
>
>             [Designer] => Array
>                 (
>                     [full_name] => Jan Grzenda
>                     [id] => 15
>                 )
>
>             [CustomerNr] => Array
>                 (
>                     [id] => 5
>                     [customers_number_name] => Test (2343)
>                 )
>
>             [StatusHistory] => Array
>                 (
>                     [0] => Array
>                         (
>                             [since] => 2009-04-21 00:00:00+02
>                             [status_names_id] => 1
>                             [changer_id] => 74
>                             [design_id] => 39
>                             [StatusName] => Array
>                                 (
>                                     [text] => Nowe
>                                 )
>
>                             [Changer] => Array
>                                 (
>                                     [full_name] => John Doe
>                                 )
>
>                         )
>
>                     [1] => Array
>                         (
>                             [since] => 2009-04-23 14:17:11.673985+02
>                             [status_names_id] => 2
>                             [changer_id] => 74
>                             [design_id] => 39
>                             [StatusName] => Array
>                                 (
>                                     [text] => Przydzielone grafikowi
>                                 )
>
>                             [Changer] => Array
>                                 (
>                                     [full_name] => Ed Smith
>                                 )
>
>                         )
>
>                 )
>
>         )
>
> I want to modify the [StatusHistory] branch.
> So far, I'm extracting it using:
>
> $hist = Set::extract($designs, '{n}.StatusHistory');
>
> This results in:
>
> Array
> (
>     [0] => Array
>         (
>             [0] => Array
>                 (
>                     [since] => 2009-04-21 00:00:00+02
>                     [status_names_id] => 1
>                     [changer_id] => 74
>                     [design_id] => 39
>                     [StatusName] => Array
>                         (
>                             [text] => Nowe
>                         )
>
>                     [Changer] => Array
>                         (
>                             [full_name] => John Doe
>                         )
>
>                 )
>
>             [1] => Array
>                 (
>                     [since] => 2009-04-23 14:17:11.673985+02
>                     [status_names_id] => 2
>                     [changer_id] => 74
>                     [design_id] => 39
>                     [StatusName] => Array
>                         (
>                             [text] => Przydzielone grafikowi
>                         )
>
>                     [Changer] => Array
>                         (
>                             [full_name] => Ed Smith
>                         )
>
>                 )
>
>         )
>
> I've tried endless combine params, but without success.
> I want to achieve this:
>
> Array
> (
>     [0] => Array
>         (
>             [Nowe] = (StatusName.text) => Array
>                 (
>                     [since] => 2009-04-21 00:00:00+02
>                     [Changer] => John Doe = (Changer.full_name)
>                 )
>
>             [Przydzielone grafikowi] => Array
>                 (
>                     [since] => 2009-04-23 14:17:11.673985+02
>                     [Changer] => Ed Smith
>                 )
>
>         )
>
> Last question, I want to replace the original [StatusHistory] with the new
> array.
>
> --
> Jacek
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

No comments: