PHP数组拼接:如何将固定变量值设为子数组首元素,其余为动态数据
解决PHP二维数组中给每个子数组添加固定首元素的问题
嘿,这个需求我之前做项目的时候也碰到过,其实有好几种简单的实现方式,我给你梳理一下:
方法一:用array_map()快速处理已有动态数据
如果你的动态子数据已经是一个二维数组了(比如每个子数组只缺开头的固定值),用array_map()可以一行搞定,代码简洁还不修改原数据:
$my_str = "TEST"; // 假设这是你已有的动态数据集合 $dynamic_data = [[22, 18], [15, 13], [5, 2], [17, 15]]; // 用array_map遍历每个子数组,把固定值拼到开头 $my_arr = array_map(function($item) use ($my_str) { return array_merge([$my_str], $item); }, $dynamic_data); // 输出结果 print_r($my_arr);
方法二:循环生成时直接构造子数组
如果你的动态数据是逐个获取的(比如从数据库查询结果、API返回数据里循环读取),那在循环里直接把固定值作为第一个元素构造子数组就最直观了:
$my_str = "TEST"; $my_arr = []; // 模拟动态数据来源,比如数据库查询的结果集 $dynamic_items = [ ['num1' => 22, 'num2' => 18], ['num1' => 15, 'num2' => 13], ['num1' => 5, 'num2' => 2], ['num1' => 17, 'num2' => 15] ]; foreach ($dynamic_items as $item) { // 直接把固定值放在第一个位置,后面跟动态数据 $my_arr[] = [$my_str, $item['num1'], $item['num2']]; } print_r($my_arr);
方法三:用array_unshift()修改子数组
如果你习惯用数组操作函数,也可以用array_unshift()给每个子数组添加首元素,不过要注意这个函数会直接修改原数组,所以最好先复制再操作:
$my_str = "TEST"; $dynamic_data = [[22, 18], [15, 13], [5, 2], [17, 15]]; $my_arr = []; foreach ($dynamic_data as $item) { // 复制原数组避免修改原始数据 $temp_item = $item; array_unshift($temp_item, $my_str); $my_arr[] = $temp_item; } print_r($my_arr);
这三种方法都能得到你想要的二维数组,你可以根据自己的实际场景选择:已有现成动态数组选方法一,循环生成数据选方法二,喜欢用数组操作函数就选方法三~
内容的提问来源于stack exchange,提问作者Nadhiful - Kun
相关产品推荐
相关产品推荐

