控制器
save_dial
每次函数$data
运行时,它都会创建一个新数组并将数组save_dial
推入其中。我想要做的是每次运行$mainstack
时,它只会将新数组推送到现有数组will-change:transform
,而不是将其推送到新数组中。有人可以帮我吗?
使用array_push打印的值
Array ( [applet] => Flow [0] => Array ( //data ) )
Array ( [applet] => Flow [0] => Array ( //data ) )
我想要打印
`
Array ( [applet] => Flow [0] => Array ( //data ) [1] => Array ( //data ))
答案 0 :(得分:0)
使用$mainstack
时,您在array_push()
数组中添加了一个数组。结果将类似于:
'applet' => "Flow",
0 => $data, // contents of $data the first time $data was added
1 => $data // contents of $data the second time $data was added
// etc.
您可能需要here(或合并)之类的内容:
function pushflow($data)
{
# Use $data elements where duplicate keys exist
$this->mainstack = $data + $this->mainstack;
avb_print_r($this->mainstack);
}
现在,您的$data
数组将添加到原始数组中,现有的键/值将替换为$data
中的值。
答案 1 :(得分:0)
这应该可以解决问题(使用array_merge代替array_push):
function pushflow($data)
{
$this->mainstack = array_merge($this->mainstack, $data);
avb_print_r($this->mainstack);
}
array_push
的作用是,它为现有数组添加一个新元素(或多个元素),因此如果你的元素是一个数组,你最终会得到一个多维数组。如果您仍然使用array_push
,则必须迭代$ data,逐个推送每个元素,或修改save_dial()
方法为您想要的每个元素调用pushflow()
添加,而不是将其添加到$data
。
更新
请注意以下代码:
class SimpleClass
{
public $mainstack = array(
'applet' => "Flow"
);
function pushflow($data)
{
$this->mainstack = array_merge($this->mainstack, $data);
echo '<pre>' . print_r($this->mainstack, true) . '</pre>';
}
public function save_dial()
{
$data = array(
'applet' => "Dial",
'dial_whom' => 'selecteddialnum',
'selected_caller' => 'scaller',
'selected_whisper' => 'swhisper'
);
$this->pushflow($data);
}
}
$a = new SimpleClass();
$a->save_dial();
,会产生这样的结果:
Array
(
[applet] => Dial
[dial_whom] => selecteddialnum
[selected_caller] => scaller
[selected_whisper] => swhisper
)
如果不是您想要获得的格式,请通过示例说明。