J'ai les deux classes suivantes et donc les deux fichiers suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
class Item {
  private $nom;
  private $code;
  private $visible;
  private $position;
 
  function __tostring() {
    return "Cette classe permet de définir et manipuler un item de menu.<br/>";
    }
 
  function __construct($nom, $code, $visible, $position) {
    $this->nom = $nom;
    $this->code = $code;
    $this->visible = $visible;
    $this->position = $position;
    }
 
  function getNom() {
    return $this->nom;
    }
 
  function setNom($nom) {
    $this->nom = $nom;
    }
 
  function getCode() {
    return $this->code;
    }
 
  function setCode($code) {
    $this->code=$code;
    }
 
  function getVisible() {
    return $this->visible;
    }
 
  function setVisible($visible) {
    $this->visible=$visible;
    }
 
  function getPosition() {
    return $this->position;
    }
 
  function setPosition($position) {
    $this->position=$position;
    }
 
 
  }
?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
include('item.inc.php5');
class Menu {
  private $items;
 
  function __tostring() {
    return "Cette classe permet de définir et manipuler un menu.<br/>";
    }
 
  function __construct() {
/*Dans le futur les items seront le resultat de requetes dans une BD MySQL*/
    $item3 = new Item('item3','#FF6633',0,3);
    $this->items[count($this->items)] = $item3 ;
 
    $item4 = new Item('item4','#3366FF',0,4);
    $this->items[count($this->items)] = $item4 ;
 
    $item5 = new Item('item5','#FF6633',0,5);
    $this->items[count($this->items)] = $item5 ;
 
    $item2 = new Item('item2','#3366FF',0,2);
    $this->items[count($this->items)] = $item2 ;
 
    $item1 = new Item('item1','#FF6633',0,1);
    $this->items[count($this->items)] = $item1 ;
 
    $item6 = new Item('item6','#FF6633',0,3);
    $this->items[count($this->items)] = $item6 ;
    }
 
  function getItems() {
    return $this->items;
    }
 
  function setItems($items) {
    $this->items = $items;
    }
 
  function sort() {
    /*Fonction qui tri les items selon la position*/
    }
 
 
  function display() {//Affichage bateau
    $retour="";
    for($i=0;$i<count($this->items);$i++){
        $retour = $retour ." | ". $this->items[$i]->getNom();
    }
    return $retour;
    }
 
  function display1() {//Affichage après tri
    $retour="";
    $this->sort();
    for($i=0;$i<count($this->items);$i++){
        $retour = $retour ." | ". $this->items[$i]->getNom();
    }
    return $retour;
    }
  }
?>
Je cherche à trier les items en fonction de leurs positions.

J'ai donc un object Menu représenté comme ceci :
+-----+-----+-----+-----+-----+-----+
|item3|item4 |item5|item2|item1|item6| <-nom des items
|3......|4......|5......|2.....|1......|3......| <-position des items
+-----+-----+-----+-----+-----+-----+

Je veux après le tri l'object Menu soit comme ceci :
+-----+-----+-----+-----+-----+-----+
|item1|item2 |item3|item6|item4|item5|
|1......|2......|3......|3.....|4......|5......|
+-----+-----+-----+-----+-----+-----+

On place les positions les plus petites en 1er et quand on a deux positions identique on a la politique du 1er arriver 1er servi.

J'espère avoir bien exprimé mon problème.