Tuesday, May 24, 2011

Here is a tutorial on using multisort for arrays. it is quite complex I think.


<?php
$data = array(
array('country'=>'Spain', 'language'=>'Spanish', 'visitors'=>1289),
array('country'=>'France', 'language'=>'French', 'visitors'=>984),
array('country'=>'Argentina','language'=>'Spanish','visitors'=>812),
array('country'=>'UK', 'language'=>'English', 'visitors'=>2786),
array('country'=>'Germany', 'language'=>'German', 'visitors'=>2786),
array('country'=>'Canada', 'language'=>'English', 'visitors'=>2331),
array('country'=>'Austria', 'language'=>'German', 'visitors'=>1102),
array('country'=>'Mexico', 'language'=>'Spanish', 'visitors'=>1071)
);
$cols = array();

foreach($data as $row)
{
foreach($row as $key => $value)
{
if(!isset($cols[$key]))
$cols[$key] = array();
$cols[$key][] = $value;
}
}
$data = $cols;
array_multisort($data['language'], $data['country'], $data['visitors']);

printf("<pre>%s</pre>\n", var_export($data, TRUE));
?>


here is another tutorial dealing with multisort


<?php
$eng = array('one', 'two', 'three', 'four'); #1-4 in English
$esp = array('uno', 'dos', 'tres', 'quatro'); #1-4 in Spanish
$deu = array('eins', 'zwei', 'drei', 'vier'); #1-4 in German
$rus = array('odin', 'dva', 'tri', 'chetire'); #1-4 in Russian
$digits = range(1,4);
array_multisort($rus, $esp, $deu, $eng, $digits);

foreach(range(0, 3) as $j){
printf("

Russian: %s (%d); Spanish: %s; German: %s; English: %s.

", $rus[$j], $digits[$j], $esp[$j], $deu[$j], $eng[$j]);
}
?>

No comments: