PHP expert |
|
Ik mis het stuk waar de zooi gesorteerd wordt;-)
Ik zou zoiets doen
<?php
$arr1 = array('blaat', 'foo', ' bar');
$arr2 = array(6, 4, 7);
$arr = array();
for($i = 0; $i < count($arr1); $i++) {
$arr[$arr2[$i]] = $arr1[$i];
}
krsort($arr);
foreach($arr as $k => $v) {
echo $k ." ". $v;
}
?>
<?php $arr1 = array('blaat', 'foo', ' bar'); for($i = 0; $i < count($arr1); $i++) { $arr[$arr2[$i]] = $arr1[$i]; } foreach($arr as $k => $v) { } ?>
Natuurlijk kan je array ineens initialiseren met welke waardes dan ook.
<?php
$arr = (6 => 'blaat', 4 => 'foo', 7 => 'bar);
krsort($arr);
...
<?php $arr = (6 => 'blaat', 4 => 'foo', 7 => 'bar); krsort($arr); ...
Hieronder een functie die twee arrays accepteert. Ze op manier 'derde argument' sorteert en twee arrays terugstuurd:
<?php
function array2_sort(&$arr1, &$arr2, $func) {
$arr = array();
for($i = 0; $i < count($arr1); $i++) {
$arr[$arr2[$i]] = $arr1[$i];
}
$func($arr);
$arr1 = array();
$arr2 = array();
foreach($arr as $k => $v) {
$arr1[] = $k;
$arr2[] = $v;
}
}
$arr1 = array('blaat', 'foo', ' bar');
$arr2 = array(6, 4, 7);
array2_sort($arr1, $arr2, "krsort");
echo "<br />";
echo "<br />";
var_dump($arr1);
echo "<br />";
var_dump($arr2);
/* output:
array(3) { [0]=> int(7) [1]=> int(6) [2]=> int(4) }
array(3) { [0]=> string(4) " bar" [1]=> string(5) "blaat" [2]=> string(3) "foo" }
*/
?>
<?php function array2_sort(&$arr1, &$arr2, $func) { for($i = 0; $i < count($arr1); $i++) { $arr[$arr2[$i]] = $arr1[$i]; } $func($arr); foreach($arr as $k => $v) { $arr1[] = $k; $arr2[] = $v; } } $arr1 = array('blaat', 'foo', ' bar'); array2_sort($arr1, $arr2, "krsort"); /* output: array(3) { [0]=> int(7) [1]=> int(6) [2]=> int(4) } array(3) { [0]=> string(4) " bar" [1]=> string(5) "blaat" [2]=> string(3) "foo" } */ ?>
array_multisort doet ook zoiets geloof ik. |