2012-11-14 12 views
8

Il seguente frammento restituisce una serie di campi di input ma non riesco a impostare i loro valori perché $ data non è definita (essendo all'interno di una chiusura).PHP Variabile indefinita in una chiusura

$row = array_map(function($n) { 
    $name = sprintf('point[%0d]', $n+1); 
    $value = $data['measurements'][$n]; 
    return form_input($name, $value, "class='input-mini'"); 
}, range($i*6, $i*6+5)); 

So che le variabili globali non sono interessanti. Qual è il modo migliore per aggirare questo?

+2

Utilizzare la funzione '($ n) utilizzare ($ data) {' – air4x

risposta

20

Inheriting variables from the parent scope

$row = array_map(function($n) use ($data) { 
    $name = sprintf('point[%0d]', $n+1); 
    $value = $data['measurements'][$n]; 
    return form_input($name, $value, "class='input-mini'"); 
}, range($i*6, $i*6+5)); 
+1

elegante, grazie – stef

Problemi correlati