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

2009-04-24 Thread Faza
Mister,

I'll be damn. Works perfectly, and - what is more than expected - I
understand why!

Thanks a bunch.
Damn. Awesome :D


> 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"  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
>>                         )
>>
>>                 )
>>
>>         )
>

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

2009-04-24 Thread grigri
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"  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 = (Chang