【问题标题】:implode() string, but also append the glue at the endimplode() 字符串,但也在末尾附加胶水
【发布时间】:2015-11-27 00:16:13
【问题描述】:

尝试使用implode() 函数在每个元素的末尾添加一个字符串。

$array = array('9898549130', '9898549131', '9898549132');
$attUsers = implode("@txt.att.net,", $array);

print($attUsers);

打印这个:

9898549130@txt.att.net,9898549131@txt.att.net,9898549132

如何让implode() 也为最后一个元素附加胶水?

预期输出:

9898549130@txt.att.net,9898549131@txt.att.net,9898549132@txt.att.net
                                                      //^^^^^^^^^^^^ See here

【问题讨论】:

  • implode 并不是真正适合这项工作的工具。带有连接的 foreach 可以正常工作。
  • implode 连接数组元素。它不会附加到所有这些。如果你有 3 个元素,你会得到 2 个连接,而不是 3 个。
  • 仅供参考:您可以在这里快速浏览并大致了解该网站:stackoverflow.com/tour(注意:如果您愿意,您可以接受自己的答案)
  • 感谢您的帮助 Rizier123

标签: php string implode


【解决方案1】:

有一个简单的解决方案来实现这一点:

$i = 1;
$c = count($array);

foreach ($array as $key => $val) {
    if ($i++ == $c) {
        $array[$key] .= '@txt.att.net';
    }
}

【讨论】:

    【解决方案2】:

    这似乎可行,但不确定它是否是最好的方法:

    $array = array('9898549130', '9898549131', '9898549132');
    $attUsers = implode("@txt.att.net,", $array) . "@txt.att.net";
    print($attUsers);
    

    【讨论】:

    • 我认为它是你能得到的最好的。另一种方法是将字符串附加到每个元素,然后用逗号分解数组。
    【解决方案3】:
    $result = '';
    foreach($array as $a) {
        $result = $result . $a . '@txt.att.net,';
    }
    $result = trim($result,',');
    

    【讨论】:

      【解决方案4】:

      这是我朋友的回答,似乎使用 foreach 提供了最简单的解决方案。

      $array = array ('1112223333', '4445556666', '7778889999');
      
      // Loop over array and add "@att.com" to the end of the phone numbers
      foreach ($array as $index => &$phone_number) {
          $array[$index] = $phone_number . '@att.com';
      }
      
      // join array with a comma
      $attusers = implode(',',$array);  
      
      print($attusers); 
      

      【讨论】:

        【解决方案5】:

        使用array_map 和 lambda 函数有一种更简单、更好、更有效的方法:

        $numbers = ['9898549130', '9898549131', '9898549132'];
        
        $attUsers = implode(
            ',',
            array_map(
                function($number) {
                    return($number . '@txt.att.net');
                },
                $numbers
            )
        );
        
        print_r($attUsers);
        

        【讨论】:

          【解决方案6】:

          在内爆之前将一个空字符串附加到您的数组。
          但是我们还有另一个问题,结尾处有一个逗号。
          所以,remove it

          输入:

          $array = array('9898549130', '9898549131', '9898549132', '');
          $attUsers = implode("@txt.att.net,", $array);
          $attUsers = rtrim($attUsers, ",")
          

          输出:

          9898549130@txt.att.net,9898549131@txt.att.net,9898549132@txt.att.net
          

          【讨论】:

            猜你喜欢
            • 2021-12-16
            • 2022-12-11
            • 2014-03-06
            • 2017-09-29
            • 2020-08-19
            • 1970-01-01
            • 2021-09-01
            • 1970-01-01
            • 2011-09-16
            相关资源
            最近更新 更多