在自定义函数内的 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');