在自定义函数内的 foreach 循环内将值推送到多维数组
Push value to multidimensional array within a foreach loop, inside a custom function
当使用 foreach 循环时它没有问题,但我不知道如何在函数中实现它。
我正在尝试编写的函数。
function fgf($array, $section_k, $section_n) {
foreach($array as &$k_687d) {
$k_687d['section'] = section_k;
$k_687d['section_name'] = $section_n;
$k_687d['section_ssn'] = 'df6s';
}
return $array;
}
数组示例。
$array = array(
'work'=>array(
'default' => 1,
'opt_type' => 'input',
),
'something_else' => array(
'default' => 1,
'opt_type' => 'list',
),
)
通话
fgf($array, 'work_stuff', 'Work Stuff');
你错过了$
:
$k_687d['section'] = $section_k;
^
如果您想要修改原始数组,请将数组作为引用传递,否则将您的调用函数分配给一个变量。
您没有使用 return 值,因此您的 $array
变量保持不变。
您应该将函数的 return 值分配给变量,例如:
$array = fgf($array, 'work_stuff', 'Work Stuff');
或使用"Pass by reference":
function fgf(&$array, $section_k, $section_n)
(注意 $array
参数前的符号)。在这种情况下,您可以从函数中删除 return 语句。
参见:http://php.net/manual/en/language.references.pass.php
我想你的本意是
function fgf($array, $section_k, $section_n)
{
$newArray = [];
for($i = 0, $count = count($array); $i <= $count; $i++) {
$newArray[$i]['section'] = $section_k;
$newArray[$i]['section_name'] = $section_n;
$newArray[$i]['section_ssn'] = 'df6s';
}
return $newArray;
}
然后你可以称之为将结果数组赋值给一个变量
$newArray = fgf($array, 'work_stuff', 'Work Stuff');
当使用 foreach 循环时它没有问题,但我不知道如何在函数中实现它。
我正在尝试编写的函数。
function fgf($array, $section_k, $section_n) {
foreach($array as &$k_687d) {
$k_687d['section'] = section_k;
$k_687d['section_name'] = $section_n;
$k_687d['section_ssn'] = 'df6s';
}
return $array;
}
数组示例。
$array = array(
'work'=>array(
'default' => 1,
'opt_type' => 'input',
),
'something_else' => array(
'default' => 1,
'opt_type' => 'list',
),
)
通话
fgf($array, 'work_stuff', 'Work Stuff');
你错过了$
:
$k_687d['section'] = $section_k;
^
如果您想要修改原始数组,请将数组作为引用传递,否则将您的调用函数分配给一个变量。
您没有使用 return 值,因此您的 $array
变量保持不变。
您应该将函数的 return 值分配给变量,例如:
$array = fgf($array, 'work_stuff', 'Work Stuff');
或使用"Pass by reference":
function fgf(&$array, $section_k, $section_n)
(注意 $array
参数前的符号)。在这种情况下,您可以从函数中删除 return 语句。
参见:http://php.net/manual/en/language.references.pass.php
我想你的本意是
function fgf($array, $section_k, $section_n)
{
$newArray = [];
for($i = 0, $count = count($array); $i <= $count; $i++) {
$newArray[$i]['section'] = $section_k;
$newArray[$i]['section_name'] = $section_n;
$newArray[$i]['section_ssn'] = 'df6s';
}
return $newArray;
}
然后你可以称之为将结果数组赋值给一个变量
$newArray = fgf($array, 'work_stuff', 'Work Stuff');