2011-12-08 14 views
5

Così sto cercando di modificare un array aggiungendo chiave e il valore di una funzione modArr; Prevedo che var dump mostri gli elementi aggiunti ma ottengo NULL. Che passo mi manca qui?php: non è possibile modificare la matrice in funzione?

<?php 

$arr1 = array(); 

modArr($arr1); 
$arr1['test'] = 'test'; 
var_dump($arr); 

function modArr($arr){ 
$arr['item1'] = "value1"; 
$arr['item2'] = "value2"; 
return; 
} 

risposta

10

Si sta modificando l'array come esiste nell'ambito della funzione, non lo scopo globale. È necessario sia restituire l'array modificato dalla funzione, utilizzare la parola chiave global (sconsigliato) o si passa la matrice alla funzione per riferimento e non il valore.

// pass $arr by reference 
$arr = array(); 
function modArr(&$arr) { 
    // do stuff 
} 

// use global keyword 
$arr = array(); 
function modArr($arr) { 
    global $arr; 
    //... 
} 

// return array from function 
$arr = array(); 
function modArr($arr) { 
    // do stuff to $arr 
    return $arr; 
} 
$arr = modArr($arr); 

Per ulteriori informazioni sulla portata variabile, controlla il PHP docs on the subject.

2

devi passare $arr per riferimento: function modArr(&$arr)

edit: notato un errore nel codice: si sta passando modArr($arr1); ma cercando di uscita $arr

Problemi correlati