如何在多维数组中插入新的键和值?

14

以下是我的多维数组$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;


                    }
            }

有人能帮我获取我描述的所需输出吗?提前致谢。


相关建议:https://stackoverflow.com/a/22640242/2943403 - undefined
2个回答

39
<?
 foreach($csmap_data as $key => $csm)
 {
  $csmap_data[$key]['flag'] = 1;
 }

那应该就行了。


嘿,你的技巧对我有用。非常感谢你的帮助。 - PHPLover
1
有人能告诉我如何在不使用循环的情况下完成吗? - Poonam

25

您也可以使用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);

这是最佳和轻量级的过程。谢谢伙计。 - Rajat Masih
我如何将一个变量传递给 arraymap 呢?假设我要传递一个变量,而不是 1,有没有办法实现这个需求呢? - Anoop P S
我们可以使用"use"来访问其他变量,我们也可以使用全局变量,同时使用"use"更新答案。 - Manmohan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接