2012-05-07 2 views
3

У меня есть эта функция PHP, который должен выполнить некоторую обработку данного массива:PHP: массив передан по ссылке на функцию?

processArray($arrayToProcess) { 

    $arrayToProcess['helloStackOverflow'] = TRUE; 
} 

Позднее код вызывает следующее:

$niceArray = array('key' => 'value'); 
processArray($niceArray); 

Ключ «helloStackOverflow» не доступен за пределами функция processArray. Я попытался назвать следующие:

processArray(&$niceArray); 

Использование «&» помогает, однако это вызывает некоторое предупреждение:

Устаревшие функции: время вызова перейти по ссылке устарела; Если вы хотели бы передать его по ссылке, изменить декларацию populateForm_withTextfields()

Пробовал & там, но это только останавливает код.

Как мне это сделать?

ответ

12

Вы должны определить ссылку в функции, а не в вызове функции.

function processArray(&$arrayToProcess) { 
5
processArray(&$arrayToProcess) { 

    $arrayToProcess['helloStackOverflow'] = TRUE; 
} 

Ссылка на передачу теперь происходит при объявлении функции, а не при вызове функции.

http://php.net/manual/en/language.references.pass.php

для полной документации.

8
processArray(&$arrayToProcess) { 

    $arrayToProcess['helloStackOverflow'] = TRUE; 
} 

реализует ссылку в PHP-режиме.

См. http://fi2.php.net/references за полезную информацию о ссылках.

Смежные вопросы