2011-12-08 12 views
5

así que estoy tratando de modificar una matriz agregando clave y valor en una función modArr; Espero que el volcado var muestre los elementos agregados pero obtengo NULL. ¿Qué paso me estoy perdiendo aquí?php: no se puede modificar la matriz en la función?

<?php 

$arr1 = array(); 

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

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

Respuesta

10

Usted está modificando la matriz como existe en el alcance de la función, no en el alcance global. Debe devolver la matriz modificada de la función, usar la palabra clave global (no recomendada) o pasar la matriz a la función por referencia y no por valor.

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

Para obtener más información sobre el alcance variables, comprobar el PHP docs on the subject.

2

usted tiene que pasar $arr por referencia: function modArr(&$arr)

edición: notado un error en el código: está de paso modArr($arr1); pero tratando de salida $arr

Cuestiones relacionadas