更新:以下是完整的控制器方法:
M:\My_View\Documents\Data.doc
在我的Laravel控制器中,我有一个像这样的全局属性:
protected $game = [];
private function stageAction($type, $actions)
{
if (env('APP_DEBUG')) {
Log::info('STAGE ACTION started with $type= '.$type.' *********************');
}
$message = [];
$this->game['sys_msg'] = [];
$this->game['stage_action'] = [];
switch ($type) {
case 'attack_end':
$message['action'] = 'ignore';
$message['message'] = '<b>'.active_player()['nickname'].'</b> ends their attack.';
$this->game['sys_msg'] = $message;
break;
case ......
break;
default:
}
// If it is an "ignored" message then send it now
if ($this->game['sys_msg']['action'] == 'ignore') {
$this->broadcastSysMsg();
}
if (env('APP_DEBUG')) {
Log::info('SYS MSG - '.print_r($this->game['sys_msg'], true));
}
在其中一种方法中,我像这样添加一个键:
protected $game = [];
然后我像这样添加值:
$this->game['sys_msg'] = [];
在代码的下面,我通过记录它的输出来检查它:
$message['action'] = 'ignore';
$message['message'] = 'My message is blah blah blah...';
$this->game['sys_msg'] = $message;
但我明白了:
Log::info('SYS MSG - '.print_r($this->game['sys_msg'], true));
我想为这个值分配一个对象数组。为什么这不起作用但没有失败?
答案 0 :(得分:2)
我可以知道,这段代码
$this->game['sys_msg'] = [];
这是在此行之前还是之后?
$message['action'] = 'ignore';
$message['message'] = 'My message is blah blah blah...';
$this->game['sys_msg'] = $message;
答案 1 :(得分:2)
有几个问题,你没有iniaizlied $message
,你刚刚开始在其中设置值。要么初始化它,要么更好,只需直接分配它,因为它会更快。
$message = [
'action' => 'ignore',
'message' => 'My message is blah blah blah...'
];
您还可以更进一步,直接将其分配给game
成员:
$this->game['sys_msg'] = [
'action' => 'ignore',
'message' => 'My message is blah blah blah...'
];
至于您未能看到更新后的价值,可能是由众多因素造成的,请发布完整的代码示例。
编辑:
在看到您的代码示例之后,还有一些建议。
不要像你一样使用数组,为sys_msg
创建一个类,这样你就不会冒{/ 1}}引发奇怪错误的错误。您还可以确保将其初始化为已知状态。例如:
aCtion