J'ai un peu mal à la tête. La fonction fait ce que je veux, mais comme je ne connais pas encore bien les fonctions array/looping de PHP, ma question est donc de savoir si une partie de cette fonction pourrait être améliorée du point de vue de la performance.PHP modifiant et combinant le tableau
$var = myFunction (array('key1', 'key2', 'key3', '111'));
function myFunction ($keys) {
$prefix = 'prefix_';
$keyCount = count($keys);
// Prefix each key and remove old keys
for($i=0;$i<$keyCount; $i++){
$keys[] = $prefix.$keys[$i];
unset($keys[$i]);
}
// output: array('prefix_key1', 'prefix_key2', 'prefix_key3', '111)
// Get all keys from memcached. Only returns valid keys
$items = $this->memcache->get($keys);
// output: array('prefix_key1' => 'value1', 'prefix_key2' => 'value2', 'prefix_key3'=>'value3)
// note: key 111 was not found in memcache.
// Fill upp eventual keys that are not valid/empty from memcache
$return = $items + array_fill_keys($keys, '');
// output: array('prefix_key1' => 'value1', 'prefix_key2' => 'value2', 'prefix_key3'=>'value3, 'prefix_111' => '')
// Remove the prefixes for each result before returning array to application
foreach ($return as $k => $v) {
$expl = explode($prefix, $k);
$return[$expl[1]] = $v;
unset($return[$k]);
}
// output: array('key1' => 'value1', 'key2' => 'value2', 'key3'=>'value3, '111' => '')
return $return;
}
Merci beaucoup!
Edit: psuedo code demandé:
- Ajouter préfixes tableau, puisque nous besoin de préfixer toutes les clés pour éviter kes écrasées dans la memcache
- Obtenir toutes les clés de memcache
- Remplissez les clés éventuels qui ne sont pas valables, car nous voudrions éviter les erreurs « non valides » indice causés par le fait d'une clé demandée ne retourné.
- Retirez les préfixes pour faire le formatage des clés plus facile sans en sortie d'avoir à obtenir le préfixe pour chaque valeur.
Pourriez-vous expliquer en pseudo-code exactement ce que vous voulez faire ? – Eric
Message mis à jour. Merci! – Industrial