2015-09-01 33 views
4

尝试使用implode()函数在每个元素的末尾添加字符串。implode()字符串,但也会在末尾附加粘连

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

print($attUsers); 

打印此:

[email protected],[email protected],9898549132 

我怎么implode()还追加胶水最后一个元素?

预期输出:

[email protected],[email protected],[email protected] 
                 //^^^^^^^^^^^^ See here 
+0

破灭是不是真的对这份工作的合适的工具。一个连接的foreach可以正常工作。 –

+1

implode连接数组元素。它不会APPEND给所有人。如果你有3个元素,你会得到2个连接,而不是3. –

+0

仅供参考:您可以在这里快速浏览并获得该网站的概述:http://stackoverflow.com/tour(注意:您可以接受自己的答案如果你想) – Rizier123

回答

1

这是我的回答似乎使用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); 
0

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

$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); 
+0

我认为它是一样好,你可以得到。另一种方法是将字符串追加到每个元素,然后用逗号将数组内爆。 – Rizier123

0
$result = ''; 
foreach($array as $a) { 
    $result = $result . $a . '@txt.att.net,'; 
} 
$result = trim($result,','); 
1

还有一个更简单,更好,更有效地实现这一目标使用array_map和lambda函数的方式:

$numbers = ['9898549130', '9898549131', '9898549132']; 

$attUsers = implode(
    ',', 
    array_map(
     function($number) { 
      return($number . '@txt.att.net'); 
     }, 
     $numbers 
    ) 
); 

print_r($attUsers); 
0

爆前追加一个空字符串到您的阵列。
但是我们还有另一个问题,最后一个尾随的逗号。因此,remove it

输入:

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

输出:

[email protected],[email protected],[email protected]