- array_flip: documentation ( source)
- usort: documentation ( source)
<?php
function test() {
$orderedids=array(7, 9, 5, 3);
$tags=array(
new Tag(3),
new Tag(7),
new Tag(5),
new Tag(9)
);
$flipped=array_flip($orderedids);
$sorter=new stdClass();
$sorter->flipped=$flipped;
$sorter->sfunct=function($tag1, $tag2) {
if ($this->flipped[$tag1->id]<$this->flipped[$tag2->id]) return -1;
else if ($this->flipped[$tag1->id]==$this->flipped[$tag2->id]) return 0;
else return 1;
};
return usort($tags, $sorter->sfunct);
}
class Tag {
public $id;
function __construct($id) {
$this->id=$id;
}
}
$rtags=test();
foreach ($rtags as $tag) echo $tag->id." ";