我有一个数组,我想在做一些过滤后添加另一个数组,我想使用一个void函数,但它没有对数组进行转换。
这是我的代码:
$report = [];
$firstHeaders = ['a','b','c'];
$fieldHeaders = ['d','e','f'];
$lastHeaders = ['x','y','z'];
$this->makeHeaders($report, $firstHeaders, $fieldHeaders, $lastHeaders);
var_dump($report);
private function makeHeaders($report, $firstHeaders, $fieldHeaders, $lastHeaders): void {
foreach ($firstHeaders as $firstHeader) {
array_push($report['headers'], $firstHeader);
}
foreach ($fieldHeaders as $fieldHeader) {
array_push($report['headers'], $fieldHeader);
}
foreach ($lastHeaders as $lastHeader) {
array_push($report['headers'], $lastHeader);
}
}
当我想要的是以下时,var_dump给了我一个空数组:
$report['headers'] = ['a','b','c','d','e','f','x','y','z']
如果返回类型是数组但是为什么void函数不起作用我可以使它工作?
答案 0 :(得分:5)
使用$report
&
private function makeHeaders(&$report, $firstHeaders, $fieldHeaders, $lastHeaders): void {
或者,如果您将$report
定义为类变量,那么您只需要:
private function makeHeaders($firstHeaders, $fieldHeaders, $lastHeaders): void {
要访问它,如:
array_push($this->report['headers'], $firstHeader);
或没有array_push()
:
$this->report['headers'][] = $firstHeader;
但是,根据您的数组键,这可以在没有循环的情况下执行:
$report["headers"] = array_merge($firstHeaders,
$fieldHeaders,
$lastHeaders);
答案 1 :(得分:0)
我感谢这不是一个直接的答案,但作为另一种考虑,可以使用array_merge()
$report = [];
$firstHeaders = ['a','b','c'];
$fieldHeaders = ['d','e','f'];
$lastHeaders = ['x','y','z'];
$report["headers"] = array_merge($firstHeaders,$fieldHeaders,$lastHeaders);
var_dump($report);
结果
array(1) {
["headers"]=>
array(9) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "d"
[4]=>
string(1) "e"
[5]=>
string(1) "f"
[6]=>
string(1) "x"
[7]=>
string(1) "y"
[8]=>
string(1) "z"
}
}