ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 问题描述 比如我们数组是这样的 ~~~ $messages=[ 'Should be working now', 'If you see', 'But there should not have blank' ]; ~~~ 我们想把他转化成makdown格式的 ~~~ $messages=[ '- Should be working now /n', '- If you see /n', '- But there should not have blank /n' ]; ~~~ # 常规写法 ~~~ $comment=''; foreach ($messages as $message){ $comment.="- {$message} \n"; } dump($comment); ~~~ 我们在数组第一个下标前面下个-,然后其他的元素前面加/n和- ~~~ $comment='- '.$messages[0]; foreach (array_slice($messages,1) as $message){ $comment.=" \n- {$message}"; } dump($comment); ~~~ # collection ## 第一种 ~~~ $comment=collect($messages)->map(function($value){ return "- {$value} \n"; }); ~~~ 这样出来每一个都是数组,我们要把他拼接成字符串,用''来拼接 ~~~ $comment=collect($messages)->map(function($value){ return "- {$value} \n"; })->implode(''); ~~~ 我们看到最后一个也有个\n这是多余的,我们可以用mb_substr来截取 `$comment=mb_substr($comment,0,-1);` 从第一个元素截取到倒数第一个 ## 第二种 之前我们发现collection要用''来把他连成字符串,其实我们可以在每个元素中间用\n来连接的 ~~~ $comment=collect($messages)->map(function($value){ return "- {$value}"; })->implode("\n"); dump($comment); ~~~