2012-09-05 5 views
5

A volte durante l'inizializzazione delle variabili, si desidera passare loro valori troppo complessi per essere calcolati in un singolo comando, in modo da calcolare una variabile dummy prima e quindi passare il suo valore , o definire una funzione altrove, e passare il suo valore di ritorno alla nostra variabile.php che calcola una variabile al volo usando le funzioni anonime

La mia domanda (desiderio) è, è possibile invece calcolare una variabile al volo utilizzando funzioni anonime?

per esempio, invece di utilizzare questo:

$post = get_post(); 
$id = $post->ID; 

$array = array(
    'foo' => 'hi!', 
    'bar' => $id 
); 

Consente di utilizzare qualcosa di simile:

$array = array(
    'foo' => 'hi!', 
    'bar' => (function(){ 
     $post = get_post(); 
     return $post->ID; 
    }) 
); 

Codice è totalmente casuale.

+2

Hai provato? – PeeHaa

+1

"Il codice è completamente casuale." una combinazione molto improbabile di lettere provenienti da qualsiasi tipo di generazione casuale –

+0

@PeeHaa sì, restituisce Chiusura :: __ set_state (array ( ) poiché le chiusure sono istanze della classe Closure. – Bakaburg

risposta

1

Nel tuo esempio, il seguente farebbe bene:

$array = array('foo'=>'hi!','bar'=>(get_post()->ID)); 

Tuttavia, con considerazione alla sua domanda di essere un po 'più tempo indeterminato e non specifiche per lo snippet di codice, si può trovare questo stackoverflow answer acceptable.

$a = array('foo' => call_user_func(
    function(){ 
     $b = 5; 
     return $b; 
    }) 
); 
var_dump($a); 
+0

è totalmente! – Bakaburg

+0

una domanda a parte: perché inserisci $ before ID in (get_post() -> $ ID)? e la parentesi è necessaria? – Bakaburg

+1

@Bakaburg my bad sul $ prima dell'ID, ho aggiornato il post con la sintassi corretta. anche i paren non sono probabilmente necessari, non ho appena testato il mio codice e ho giocato sul sicuro :) – zamnuts