Un petit snipet en passant
By Geoffrey on Wednesday 29 September 2004, 23:48 - Coding - Permalink
Voilà ce soir j'ai codé un peu et j'ai fait un truc qui associe des clés a un tableau numérique. Pas très clair la description, le code le sera plus.
$keys contient les noms des clés, $data contient... les données. $array est le tableau final.
$keys = array('un', 'deux', 'trois');
$data = array(1, 2);
$array = array();
while ($var = array_shift($data)) {
$array[array_shift($keys)] = $var;
}
Bon ok, si il y a plus d'éléments dans $keys que dans $data, ça se chie dessus. Mais dans mon cas, ça ne peut pas être le cas, donc je ne me suis pas fait chier. En fait, dans mon cas c'est un peu plus subtile que ça puisque
- ça se passe dans un objet
- je dois pouvoir réutiliser
$keys
Avant de donner l'autre version, je vais répondre à la question que vous vous posez peut-être: mais à quoi ça sert ?. C'est très simple, j'ai des méthodes qui reçoivent en argument des tableaux à clés numériques, parceque c'est plus simple comme ça. Donc je les convertis en tableaux associatifs et voilà (ça explique en même temps pourquoi je peux pas avoir un $data plus gros que le $keys).
Donc finalement ça donne ça:
class Bookmark {
$this->_varNames = array('name', 'url', 'category');
$this->_data = array();
function Bookmark ($data) {
while ($var = array_shift($data)) {
$this->_data[current($this->_varNames)] = $var;
next($this->_varNames);
}
reset($this->_varNames);
}
}
Voilà. Moi je trouve ça assez sexy.