JeuWeb - Crée ton jeu par navigateur
[PHP] Structure d'un tableau pour un graphe - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [PHP] Structure d'un tableau pour un graphe (/showthread.php?tid=5459)

Pages : 1 2


RE: Structure d'un tableau - Myrina - 11-08-2011

Et si tu remplaçais
$parents[$rid] = $parent->getRequiresRecursive();
par
$parents[] = array('key'=>$rid, 'value'=>$parent->getRequiresRecursive());
ou par
$parents[$rid][] = $parent->getRequiresRecursive();
?

Ainsi les doublons devraient apparaitre


RE: Structure d'un tableau - niahoo - 11-08-2011


J'aime bien celui-là.

(11-08-2011, 08:47 AM)Myrina a écrit :
$parents[] = array('key'=>$rid, 'value'=>$parent->getRequiresRecursive());

?

Ainsi les doublons devraient disparaître

Ta fonction getRequiresTree($itemid) devrait être une fonction statique car elle ne fait pas appel à l'objet qui l'appelle. (elle n'utilise pas $this)


RE: Structure d'un tableau - Hideaki - 11-08-2011

Ma petite solution ( à modifier légèrement ) fessait déjà le job Smile: (j'ai traduit {9, { {6, {3,2}}, {6, {3,2}} } } en fonction de ton exemple)


array(2) {
[0] => 9,
[1] => array(2){
[0] => array(2){
[0] => 6,
[1] => array(2){
[0] => array(2){
[0] => 3,
[1] => array(0)
},
[1] => array(2){
[0] => 2,
[1] => array(0)
}
}
},
[1] => array(2){
[0] => 6,
[1] => array(2){
[0] => array(2){
[0] => 3,
[1] => array(0)
},
[1] => array(2){
[0] => 2,
[1] => array(0)
}
}
}
}
}

@Zeppelin: Si tu veux avoir l'identifiant en clef de ton tableau, tu n'y arriveras pas, puisque que cela est strictement impossible, il est impossible de tenter de mettre 2 choses dans une même case. Hormis la solution que je te propose, il y a bien une autre solution plus compliquer à mettre en place, en cas de doublons non pas créer une simple array mais 2 array imbriqué les deux chemins.



<?php

class Item
{
private $id;

public function __construct($id)
{
$this->id = $id;
}

public function getRequiresRecursive()
{
$requires_id = ItemsConfig::getInstance()->getRequires($this->id); // doit retourner array() vide si pas de parents

$parents = array();


$temp = -1;
$identique = false;
// Je suppose qu'il y aura toujours 2 objets max Smile
foreach($requires_id as $rid)
{
$parent = new self($rid);
if($temp == -1)
{
$temp = $rid;
$parents[$rid] = $parent->getRequiresRecursive();
}
else if($temp == $rid)
{
$parents[$rid] = array($parents[$rid], );

}
else
{
$parents[$rid] = $parent->getRequiresRecursive();
}
}
return $parents;
}
}


Avec cette solution ( à améliorer ) en cas de doublon tu trouveras un array contenant 2 arrays permettant ainsi de savoir s'il y a une fusion de 2 objets (identique ou presque)


PS : je ne me suis pas trop pencher sur la réponse précédente Wink

[EDIT] Il ne veut pas éliminer les doublons bien au contraire Wink


RE: Structure d'un tableau - Myrina - 11-08-2011

(11-08-2011, 09:14 AM)niahoo a écrit :
(11-08-2011, 08:47 AM)Myrina a écrit : Ainsi les doublons devraient disparaître
C'est bien apparaitre que j'ai écrit; il n'y a pas d'erreur de langage!



RE: Structure d'un tableau - niahoo - 11-08-2011

erf oui en plus.. c'est l'erreur qui disparait !


RE: Structure d'un tableau - zeppelin - 16-08-2011

Merci a tous! Je posterais ici le lien pour vous montrer le résultat des que j'aurais fini! Smile