Newsgroup: it.comp.www.php
Titolo: nomi variabili usate come parametri

<?php
function xyz($nome, $cognome, $indirizzo) {
 
     foreach (func_get_args() as $key => $value) {
         echo "$key - $value <br>";
     }
 
}
 
xyz('test1', 'test2', 'test3');
?>
 
Se lo mando in esecuzione quindi ottengo;
 
0 - test1
1 - test2
2 - test3
 
Per� invece di "0, 1, 2" vorrei avere i nomi delle variabili usate come 
parametri della funzione "xyz".
Cio� vorrei quindi ottenere:
 
nome - test1
cognome - test2
indirizzo - test3
 
Si pu�?


Non conosco la risposta ma il quesito mi stimola una domanda: perch� mai 
usare func_get_args() per conoscere quello che gi� sai?
 
Imho func_get_args() ha senso solo se devi passare un numero 
variabile/arbitrario di argomenti, vedi ad esempio le funzioni native 
max() e sprintf().
 
function xyz($nome)
{
   if ($nome == 'boh')
   {
     ...
   }
   foreach(func_get_args() as $key => $value)
   {
     echo "$key - $value <br>";
   }
}
 
o anche
 
function xyz()
{
   foreach(func_get_args() as $key => $value)
   {
     ...
   }
}
 
-- 
TeeBX VoIP communication platform (coming soon)
http://code.google.com/p/teebx/
 
-----------------------------------------------
Lightweight++ Business Friendly++ Open++

 ?>
 
non fai prima a passare un array?
una cosa di questo tipo insomma:
 
<?php
function xyz($params) {
	foreach ($params as $k => $v) {
		echo "$k = $v <br>";
	}
}
 
$params = array('nome' => 'test1', 'cognome' => 'test2', 'indirizzo' => 
'test3')
xyz($params);
?>
 
 

 }
 
quindi?
Hai postato due esempi, a che  scopo?


 
function makeUrl($nome, $cognome) {
 
	$nomeSito = '
www.io.com
';
	$pars = "nome=$nome&cognome=$cognome";
 
	return "http://$nomeSito?$pars";
 
}
 
da notare;
 
nome=$nome
(sono costretto a ripetere 'nome' due volte)
 
cognome=$cognome
(anche qui sono costretto a ripetere 'cognome' due volte)
 
Naturalmente se oltre a nome e cognome, ci sarebbero da specificare 
anche indirizzo, codice fiscale, residenza, sesso, cellulare, ecc... il 
tutto sarebbe, ancor di pi�, poco pratico.
 
Quindi basterebbe un foreach:
 
     $pars=null; foreach (func_get_args() as $key => $value) {
         $pars .= "$key=$value&";
     }
     //naturalmente alla fine andrebbe tolta la '&' finale...
 
purtroppo per�, come gi� sperimentato, non funziona... ($key dovrebbe 
contenere il nome del parametro, non l'indice)

 contenere il nome del parametro, non l'indice)
 
…appunto :D
 


 
si, ma se si tratta di aggiungere variabili, o modificarne il nomi, devi 
fare di volta in volta  a mano tutti gli aggiustamenti
 
 


Concordo sul passare eventualmente un array, ma volendo si può anche 
fare così (trovato come sempre nei commenti di 
php.net
):
 
<?php
 
$pippo = "poppo";
 
function var_name(&$var, $scope=0)
{
     $old = $var;
     if (($key = array_search($var = 'unique'.rand().'value', !$scope ? 
$GLOBALS : $scope)) && $var = $old) return $key;
}
echo var_name($pippo);
 
 
@OP
Renditi conto però che la soluzione è orrenda: la volta che tu dovessi 
mettere mani al protocollo remoto non ne vieni più a capo
 
 
 
-- 
I fatti mi cosano

 }
 
Orrendo! :)
 
print '
http://www.io.com/
?'
  . http_build_query(array(
    'nome' => $nome,
    'cognome' => $cognome
  ))
;
 
Meglio ancora se usi http_build_url()
 
Lascia perdere le funzioni con parametri variabili. Non dovresti mai 
usarle. Forse dopo una decina d'anni che usi PHP potrai prenderle in 
mano, ma per ora non farlo. Ti fai solo male.
 
Bye.

 mano, ma per ora non farlo. Ti fai solo male.
 
tra 10 anni php ci sarà?
Molti server non hanno neanche aggiornato alle ultime versioni...
Mi sembra si stia affermando python...


 
lasciamo perdere va...

 Mi sembra si stia affermando python...
 
Tra 10 anni php sará defunto, infatti anche facebook sta pianificando la
migrazione verso altri linguaggi, ci sono rumors che dicono che si stia
scrivendo il proprio linguaggio con funzionalitá social, tipo
echo_to_your_diary() oppure foreach_friend(). In effetti forse é meglio
se inizi con python.
 
C'é anche un ottimo newsgroup, it.copm.lang.python.
 
-- 
g4b0, linux user n. 369000
http://brosulo.net
 

 Mi sembra si stia affermando python...
 
Python si sta affermando da almeno 10 anni, e non si è ancora affermato.
Parlando di web, python ha perso il treno e dubito lo riprenderà, 
schiacciato da PHP e Ruby (e probabilmente da Javascript o da uno dei 
suoi dialetti anche sui server).
 
È un bel linguaggio, intendiamoci (a parte l'indentazione), ma come 
diceva quel tale (Stroustup?), esistono due tipi di linguaggi: quelli di 
cui tutti si lamentano, e quelli che nessuno usa. :P
 
Bye.


 
lo so ;)


 
beh molti giganti come google usano python
 

 beh molti giganti come google usano python
 
Google ha anche assunto Guido van Rossum... :)
 
Come ho detto, è un bel linguaggio, ma gli manca la massa di persone che 
lo usa.
 
Puoi (figurativo) parlar male di PHP finché vuoi, ma uno sviluppatore PHP, 
da formare o esperto, lo trovi sempre. Hosting con PHP lo trovi 
dappertutto. Framework come se piovessero. Progetti molto grossi (Drupal, 
Wordpress) e usati anche da nomi importanti (la Casa Bianca) ce ne sono.
 
Nulla vieta (anzi, spesso è consigliato) di mischiare i linguaggi. Per 
esempio puoi usare Python "dietro" PHP, magari attraverso gearman, e poi 
implementare le API in Node.js e la versione mobile in RubyOnRails. 
Quello che conta sono i dati e i protocolli di comunicazione, che devi 
standardizzare. A quel punto un linguaggio vale l'altro, e usi quello più 
adatto alla situazione.
 
Io trovo che PHP sia quello più adatto in molte situazioni, e se usato 
bene, soprattutto con la 5.3 o la 5.4, non ha quasi niente da invidiare 
agli altri.
 
Bye.