derniere clé insérée avec array_push()

Petit nouveau ! | 3 Messages

09 févr. 2009, 05:05

Bonjour, j'ai une classe qui ressemble à ça :
class exemple {

   private $livre = array();

   function ajoute($titre, $auteur) {
      array_push($this->livre, array('titre' => $titre, 'auteur' => $auteur));
   }

}
Je souhaiterais que la fonction ajoute() retourne la valeur de la clé du nouvel enregistrement... Et je ne sais fichtrement pas comment l'obtenir. Quelqu'un peut m'aider ? Merci !

ViPHP
AB
ViPHP | 5818 Messages

09 févr. 2009, 09:49

Normalement puisque cela correspond au dernier élément du tableau l'index devrait être égal à count($tableau)-1. Et au cas où ton tableau possède des 'trous' tu pourrais au préalablement le réindexer avec une fonction comme array_splice($tableau,0,0);

ViPHP
ViPHP | 2287 Messages

09 févr. 2009, 10:24

Ou sinon :
return max(array_keys($this->livre));
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Petit nouveau ! | 3 Messages

10 févr. 2009, 00:40

Merci pour vos réponses. Malheureusement aucune de ces solutions ne fonctionne pour mon cas. Il y aura des trous, et je voudrai me servir de cet id justement comme un handle vers un élément de $livre depuis l'exterieur de l'objet.

Par exemple :
$les_livres = new exemple();

$mon_livre = $les_livres->ajoute('Ca', 'Stephen King');
$ton_livre = $les_livres->ajoute('1984', 'Orwell');

echo 'ton livre s\'appelle ' . $les_livres->titre($ton_livre);

echo 'je brûle mon livre !';
$les_livres->bruler($mon_livre);


en ajoutant à la classe exemple :
function titre($handle) {
   return $this->livre[$handle]['titre'];
}

function bruler($handle) {
   unset($this->livre[$handle]);
}
Donc je dois être sûr d'avoir le bon index et qu'il soit pérène...
Ou trouver une autre méthode :?