2010-02-12 4 views
1

La fonction d'extraction de php ajoute des variables à la portée locale de la fonction appelante. Comment pouvons-nous écrire notre propre extrait de fonction php qui fait la même chose?Peut-on implémenter une fonction d'extraction php en php sans out en utilisant zend api

+5

Pourquoi voulez-vous? - Je ne comprends pas l'intention de la question. – johannes

+0

Je ne ferais pas ça, bien sûr. Je pensais juste s'il y a un moyen de le faire. Maintenant, il confirme que nous ne pouvons pas. – anony

Répondre

1

Je ne pense pas que vous puissiez le faire en PHP pur: une fonction n'a pas accès aux variables de son appelant. Cela ressemble au genre de chose dont vous aurez besoin pour écrire une extension C à développer - vous aurez plus de contrôle sur les variables internes de PHP là-bas.

(Et je ne vois vraiment pas pourquoi vous essayez de le faire: pourquoi ne pas simplement utiliser la fonction extract existante)

+0

Je me demandais juste s'il y a un moyen php pur de mise en œuvre de l'extrait – anony

0

PHPJS est une bibliothèque JavaScript qui contient les fonctions que celles de php, voici sa fonction extract vous pouvez avoir une idée de. Cela dit, je me demande pourquoi cherchez-vous votre propre fonction quand php fournit déjà un.

0

Ok, si elle est juste pour le plaisir est possible:

<?php 
$data=array('a' => 1, 'b' => 2); 

foreach ($data as $name => $value) { 
    ${$name} = $value; 
} 

echo $a; 
?> 

Mais certains problèmes - comme les conflits avec les données $, le nom de $ et la valeur de $ et vous ne pouvez pas l'envelopper dans une fonction. Mais possible.

0

Oui, il est possible,

la raison pour laquelle je l'ai fait parce que je besoin de quelque chose de plus de la fonction d'extrait qu'il devrait couper les valeurs trop

function extractArray($ar) { 
     if(count($ar)>=1) { 
      foreach($ar as $k=>$v) { 
       $GLOBALS[$k] = (is_array($v)?$v:trim($v)); 
      } 
     } 
} 

Je viens pas mon _GET, $ _POST , et d'autres tableaux comme ceci par exemple $ _GET ['nom d'utilisateur'] = 'justnajm'; extractArray ($ _ GET); Et je peux juste faire écho et il va imprimer 'justnajm'