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 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。