Как я могу написать в PHP функцию, которая модифицирует массив? - PullRequest
11 голосов
/ 06 июля 2011

Я хотел бы иметь функцию, которая принимает массив в качестве входных данных и изменяет некоторые значения массива (в моем случае это массив $ _SESSION, но я думаю, что на самом деле это не имеет значения).

Как можноЯ так делаю?


ДОБАВЛЕНО

Звучит банально.Но это не так.Я просто хочу установить определенные значения в массиве.Например, я хочу, чтобы моя функция изменила $ _SESSION ['x'] и $ _SESSION ['y'].Насколько я знаю, если я передам массив в качестве аргумента, то любые изменения аргумента не изменят исходный массив.Например:

function change_array($x) {
   $x[0] = 100;
}
$x = array(1,2,3);
change_array($x);

Это не изменит $ x.


ДОБАВЛЕНО 2

Почему мой вопрос отклонен?Я думаю, что вопрос не так тривиален, несмотря на то, что он короткий.Я также думаю, что я дал все соответствующие детали.Насколько я понял (благодаря одному ответу), речь идет о "передаче ссылки".Более того, тот факт, что я хочу изменить массив $ _SEESION, делает его немного другим.

Ответы [ 3 ]

21 голосов
/ 06 июля 2011

что вы подразумеваете под его вызовом: Передача по ссылке

очень просто, как

function changearray(&$arr){
     $arr['x'] = 'y';
}

, вы можете назвать это как:

changearray($_SESSION);
0 голосов
/ 03 апреля 2015
function change_array() {

     global $x; /*this will tell the function to work on the array 'x' out of the function itself.*/
     $x[0] = 100;

}
0 голосов
/ 06 июля 2011

Кодировка выглядит так: -

$_SESSION['index_1'] = 'value 1';
$_SESSION['index_2'] = 'value 2';

Если вы хотите изменить значение индекса "index_2" на значение "value 2 changed", то просто напишите: -

$_SESSION['index_2'] = 'value 2 changed'; 

Надеюсь, это поможет.

...