duagfgfn1981 2011-12-29 01:47
浏览 48
已采纳

如何将字符串数组写入单个格式化的字符串中

I have an array of items:

array(
    'apples',
    'oranges',
    'pineapples'
)

that I would like to format like so: "Some of my favorite fruits are apples, oranges and pineapples"

So, using PHP I would like to be able to transform that array into a reader friendly apples, oranges and pineapples.

At first I thought I might be able to use array_map but i'm not sure how I would go about telling what the last and 2nd to last items are (it's easy to add a , after each item with array_map, however you wouldn't want a comma before the last item)

Thoughts?

  • 写回答

4条回答 默认 最新

  • dsxi70423 2011-12-29 01:49
    关注

    Divide the problem to conquer it: Take out the last element, create the comma separated list and then add the last element.

    $array = array(
        'apples',
        'oranges',
        'pineapples'
    );
    
    $last = array_pop($array);
    echo implode(', ', $array), ' and ', $last; # apples, oranges and pineapples
    

    Naturally this only makes sense when there are at least two values in the array. Functions used: implodeDocs (probably more suitable than array_map in this case) and array_popDocs.


    On the other hand, if the values do not contain any , you can first create a comma separated string with the implode function and then use a regular expression to replace the last comma with and.

    That done will also work on arrays that have less than 2 elements. I do this in a loop that removes one element from the array in each step so that it shows how it behaves:

    $array = array(
        'apples',
        'oranges',
        'pineapples'
    );
    
    foreach($array as $v)
    {
        echo preg_replace('(,([^,]*)$)', ' and$1', implode(', ', $array)), "
    ";
        array_pop($array);
    }
    

    Output:

    apples, oranges and pineapples
    apples and oranges
    apples
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开