Re: Set::extract and Set::combine - help needed
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
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