在自定义函数内的foreach循环中将值推送到多维数组

时间:2016-02-25 11:16:02

标签: php arrays multidimensional-array return-value

当使用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');

3 个答案:

答案 0 :(得分:1)

我认为你想要像

这样的东西
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');

答案 1 :(得分:0)

您错过了$

$k_687d['section']      = $section_k;
                          ^

如果您希望修改原始数组,请将该数组作为参考传递,否则将您的调用函数指定给变量。

答案 2 :(得分:0)

您没有使用返回值,因此$array变量保持不变。

您应该将函数的返回值赋给变量,例如:

$array = fgf($array, 'work_stuff', 'Work Stuff');

或使用“按参考传递”:

function fgf(&$array, $section_k, $section_n)

(注意$array参数前的&符号)。在这种情况下,您可以从函数中删除return语句。 请参阅:http://php.net/manual/en/language.references.pass.php