2011-12-08 11 views
5

więc próbuję zmodyfikować tablicę przez dodanie klucza i wartości w funkcji modArr; Oczekuję, że zrzut var wyświetli dodane elementy, ale otrzymam NULL. Jakiego kroku tu brakuje?php: nie można modyfikować funkcji tablicy?

<?php 

$arr1 = array(); 

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

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

Odpowiedz

10

użytkownik modyfikuje tablicę jako istnieje w zakresie funkcji, a nie w zasięgu globalnym. Musisz albo zwrócić zmodyfikowaną tablicę z funkcji, użyć słowa kluczowego global (niezalecane) lub przekazać tablicę do funkcji przez odniesienie, a nie wartość.

// 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); 

Aby dowiedzieć się więcej o zakresie zmiennych, sprawdź numer PHP docs on the subject.

2

trzeba przejść $arr przez odniesienie: function modArr(&$arr)

edit: zauważyłeś błąd w kodzie: Jesteś przechodzącą modArr($arr1); ale próbuje wyjściu $arr

Powiązane problemy