You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何遍历多组输入数组并合并对应元素

问题:合并多组用户信息为指定格式的字符串/集合

我在Laravel控制器里写了这段代码:

$initials = $request->customer_initial;
$firstnames = $request->room_customerfirstname;
$lastnames = $request->room_customerlastname;
print_r($initials);
print_r($firstnames);
print_r($lastnames);

打印结果如下:

Array ( [0] => Mr [1] => Ms )
Array ( [0] => Jeffrey [1] => Taylor )
Array ( [0] => Way [1] => Otwell )

现在需要把这些数据转换成这样的格式:

Mr Jeffrey Way Ms Taylor Otwell

请问该如何实现?


回答

嗨,这问题很好解决,给你两种实用的实现方式,适配Laravel开发场景:

方法1:原生PHP循环拼接(快速直接)

如果只是要生成目标格式的字符串,直接遍历数组索引拼接就好,逻辑清晰易懂:

$result = '';
// 取其中一个数组的长度作为循环次数(默认三个数组长度一致)
$totalUsers = count($initials);

for ($i = 0; $i < $totalUsers; $i++) {
    // 拼接单个用户的称谓、名、姓,再追加到结果里
    $result .= "{$initials[$i]} {$firstnames[$i]} {$lastnames[$i]} ";
}

// 去掉末尾多余的空格
$result = trim($result);

// 此时 $result 就是你要的 "Mr Jeffrey Way Ms Taylor Otwell"
echo $result;

方法2:Laravel集合优雅实现(推荐)

既然用的是Laravel,用集合的zip方法可以更优雅地把三个数组按索引配对,后续扩展也更灵活:

// 将三个数组转为集合,用zip按索引合并,每个元素是包含单个用户三个信息的子集合
$userCollections = collect($initials)->zip($firstnames, $lastnames);

// 生成目标字符串:先把每个用户的三个信息拼成字符串,再把所有用户的字符串用空格连接
$targetString = $userCollections
    ->map(fn($user) => implode(' ', $user))
    ->implode(' ');

echo $targetString; // 输出:Mr Jeffrey Way Ms Taylor Otwell

// 如果需要保留集合格式(每个元素是单个用户的完整名称),只保留map结果即可:
$userNamesCollection = $userCollections->map(fn($user) => implode(' ', $user));
// $userNamesCollection 是集合对象,内容为 ['Mr Jeffrey Way', 'Ms Taylor Otwell']

小提醒

两种方法都默认三个数组的长度是一致的,如果存在长度不一致的情况,你可以加个判断跳过不存在的索引,避免报错哦~

内容的提问来源于stack exchange,提问作者arun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:57:35