在过去的半小时里,我一直在为此疯狂,并检查了各种网站,试图找到解决方案,而且每个人都在建议的是我尝试过的。
我将一个数组传递给我的函数将一些数据写回客户端,但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);
}
答案 0 :(得分:1)
如果要修改数组而不在函数末尾显式返回,则需要通过引用传递。改变你的功能:
private function _setResponse(&$data, $statusCode = 200)
您可以在PHP手册中阅读passing by reference上的更多内容。