What I did to convert them was basically reorder by 'cat', then by 'name', and then by 'rating'.
Any help will be appreciated greatly!%arr1 = ( { id => 1, name => 'Frank', cat => 'Cat1', rating => 5 }, { id => 2, name => 'John', cat => 'Cat1', rating => 4 }, { id => 3, name => 'Smith', cat => 'Cat1', rating => 3 }, { id => 4, name => 'Smith', cat => 'Cat2', rating => 8 }, { id => 5, name => 'John', cat => 'Cat2', rating => 9 }, { id => 6, name => 'Frank', cat => 'Cat2', rating => 10 }, { id => 7, name => 'Frank', cat => 'Cat3', rating => 1 }, { id => 8, name => 'Smith', cat => 'Cat3', rating => 8 }, { id => 9, name => 'Frank', cat => 'Cat3', rating => 2 }, { id => 10, name => 'John', cat => 'Cat1', rating => 3 } ); %arr2 = ( { id => 1, name => 'Frank', cat => 'Cat1', rating => 5 }, { id => 10, name => 'John', cat => 'Cat1', rating => 3 }, { id => 2, name => 'John', cat => 'Cat1', rating => 4 }, { id => 3, name => 'Smith', cat => 'Cat1', rating => 3 }, { id => 6, name => 'Frank', cat => 'Cat2', rating => 10 }, { id => 5, name => 'John', cat => 'Cat2', rating => 9 }, { id => 4, name => 'Smith', cat => 'Cat2', rating => 8 }, { id => 7, name => 'Frank', cat => 'Cat3', rating => 1 }, { id => 9, name => 'Frank', cat => 'Cat3', rating => 2 }, { id => 8, name => 'Frank', cat => 'Cat3', rating => 8 }, );
Thanks,
--nutshell
In reply to Complicated, multi-level array sorting by nutshell
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |