将新的关联元素附加到二维数组的每一行

问题描述 投票:0回答:3

以下是我的多维数组的输出

$csmap_data

Array
(
    [0] => Array
        (
            [cs_map_id] => 84
            [cs_subject_id] => 1
        )

    [1] => Array
        (
            [cs_map_id] => 85
            [cs_subject_id] => 5
        )

    [flag] => 1
)

最初,数组中没有

[flag] => 1
键值。我将它添加到数组中
$csmap_data

最终,我想将

[flag] => 1
添加到上述两个数组元素中——而不是作为单独的数组元素。简而言之,我想要以下输出:

Array
    (
        [0] => Array
            (
                [cs_map_id] => 84
                [cs_subject_id] => 1
                [flag] => 1
            )
    
        [1] => Array
            (
                [cs_map_id] => 85
                [cs_subject_id] => 5
                [flag] => 1
            )
       )

我试图实现此目的的代码如下,但无法获得所需的输出:

if (!empty($csmap_data)) {  
    foreach ($csmap_data as $csm) {
        $chapter_csmap_details = $objClassSubjects->IsClassSubjectHasChapters($csm['cs_map_id']);
        $csmap_data['flag'] = 1;                            
    }
}
php arrays multidimensional-array associative-array
3个回答
39
投票
<?
 foreach($csmap_data as $key => $csm)
 {
  $csmap_data[$key]['flag'] = 1;
 }

这应该可以解决问题。


26
投票

您也可以使用 php 数组函数来完成

$csmap_data = array_map(function($arr){
    return $arr + ['flag' => 1];
}, $csmap_data);

更新: 要在

array_map
函数的回调函数中使用多个变量,我们可以通过
use

来实现
$flagValue = 1;
$csmap_data = array_map(function($arr) use ($flagValue){
    return $arr + ['flag' => $flagValue];
}, $csmap_data);

0
投票

使用数组并集运算符以函数式方式填充新数组:演示

$padWith = ['flag' => 1];
var_export(
    array_map(
        fn($v) => $v + $padWith,
        $array
    )
);

通过引用和数组联合赋值运算符进行函数式修改:Demo

$padWith = ['flag' => 1];
array_walk(
    $array,
    fn(&$v, $k, $extra) => $v += $extra,
    $padWith
);
var_export($array);

使用对称数组解构语法和最小变量通过引用进行经典循环修改:演示

foreach ($array as ['flag' => &$flag]) {
    $flag = 1;
}
var_export($array);
© www.soinside.com 2019 - 2024. All rights reserved.