PHP:数组是否自动传递给函数?

时间:2015-05-11 18:51:51

标签: php arrays

在过去的半小时里,我一直在为此疯狂,并检查了各种网站,试图找到解决方案,而且每个人都在建议的是我尝试过的。

我将一个数组传递给我的函数将一些数据写回客户端,但PHP总是抱怨一个不存在的密钥正在尝试访问。这很好,但默认情况下我认为如果你尝试为未指定的密钥设置一个值,PHP会生成该密钥并将其添加到数组中:

if(!isset($data['payload']))
   $data['payload'] = 'No data for this resource';

我认为这个不起作用的唯一原因是Array是不可变的,因此无法附加到。

private function _setResponse($data, $statusCode = 200)
{
    header("HTTP/1.1 " . $statusCode . " " . $this->_getStatus($statusCode));

    if(!isset($data['payload']))
        $data['payload'] = 'No data for this resource';

    // Set the response object
    $response = array(
                        'response' => $statusCode . " : " . $this->_getStatus($statusCode),
                        'data' => $data['payload']
                     );

    return json_encode($response);
}

1 个答案:

答案 0 :(得分:1)

如果要修改数组而不在函数末尾显式返回,则需要通过引用传递。改变你的功能:

private function _setResponse(&$data, $statusCode = 200)

您可以在PHP手册中阅读passing by reference上的更多内容。