2015-05-11 18 views
-2

在过去的半个小时里,我一直在为此而疯狂,并且检查过不同的网站以尝试寻找解决方案,而每个人都在建议的是我所尝试的。PHP:数组是否自动传递给函数不可变?

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

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

我能想到这样做的唯一原因不工作数组是不可变的,因此不能被追加到数组中。

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); 
} 
+0

你的功能是什么样的?它会生成一个键,传入的变量只有一个本地范围。 – jeroen

+0

对不起,您追加到问题 – Alex

+1

您确定这是您获取警告的地方吗?您应该检查(添加...)确切的错误消息,并查看它发生的位置,因为这不应该给您带来任何问题。 – jeroen

回答

1

如果要修改数组而不显式地在函数结尾处返回它,则需要通过引用传递。更改您的功能,例如:

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

您可以在PHP手册了解更多关于passing by reference

+0

这工作,谢谢:) – Alex