2011-11-09 47 views
7

Tôi cần nối một số chuỗi không xác định, và tôi muốn một khoảng trống giữa hai chuỗi liền kề nhau. Giống như vậy a b c d e f.Cách tốt nhất để ghép chuỗi trong PHP với khoảng cách giữa

Ngoài ra tôi không muốn bất kỳ không gian đầu hoặc cuối nào, cách tốt nhất để làm điều này trong PHP là gì?

+0

Làm cách nào để bạn lưu trữ các chuỗi đó? Chúng có trong một mảng không? Hoặc trong các biến riêng biệt? – kapa

+0

Chúng là các biến riêng biệt, và nếu biến không được thiết lập hoặc một chuỗi rỗng tôi không muốn nó được bao gồm trong chuỗi nối. – freshest

+0

@freshest Và các biến được tạo ra như thế nào? Bạn không thể đặt các giá trị trong một mảng thay vì các biến miễn phí? – deviousdodo

Trả lời

25

Bạn có nghĩa là $str = implode(' ', array('a', 'b', 'c', 'd', 'e', 'f'));?

+0

Cảm ơn rất nhiều. – freshest

1

xem xét rằng bạn có tất cả những chuỗi thu thập vào một mảng, một cách để làm điều đó có thể được trough một câu foreach như:

$res = ""; 
foreach($strings as $str) { 
    $res.= $str." "; 
} 

if(strlen($res > 0)) 
    $res = substr($res,-1); 

theo cách này bạn có thể có quyền kiểm soát quá trình thay đổi trong tương lai.

+3

Âm thanh quá mức khi bạn có 'implode()'. – kapa

+0

yay, tôi biết, nhưng tôi thường muốn mọi thứ được mở và kiểm soát mang lại cho tôi sự tự do để thay đổi bất cứ lúc nào khi tôi đối mặt với các kiểu dữ liệu không xác định, vì bây giờ nó là một chuỗi chuỗi nhưng bạn không bao giờ biết điều gì xảy ra trong quá trình phát triển , vì vậy tôi muốn có loại tự do đó. Tôi luôn luôn có thời gian để thay đổi nó thành một implode đơn giản/tham gia như xa như tôi chắc chắn về công cụ. – holographix

+1

Giải pháp của bạn (sử dụng 'foreach') giả định các chuỗi nằm trong một mảng. Cách sử dụng 'implode' cũng giả sử các chuỗi nằm trong một mảng. Tôi không thấy tự do ở đây, tôi chỉ thấy một loạt các dòng không cần thiết làm giảm khả năng đọc. – kapa

3
$strings = array(" asd " , NULL, "", " dasd ", "Dasd ", "", "", NULL); 

function isValid($v){ 
return empty($v) || !$v ? false : true; 
} 

$concatenated = trim(implode(" ", array_map("trim", array_filter($strings, "isValid")))); 

//"asd dasd Dasd" 
3
function concatenate() 
{ 
    $return = array(); 
    $numargs = func_num_args(); 
    $arg_list = func_get_args(); 
    for($i = 0; $i < $numargs; $i++) 
    { 
     if(empty($arg_list[$i])) continue; 
     $return[] = trim($arg_list[$i]); 
    } 
    return implode(' ', $return); 
} 

echo concatenate("Mark ", " as ", " correct"); 
2

Cách đơn giản là:

$string="hello" . " " . "world"; 
2

Tôi chỉ muốn thêm vào deviousdodo của trả lời rằng nếu có một trường hợp đó có chuỗi rỗng trong mảng và bạn không muốn những để xuất hiện trong chuỗi được nối, chẳng hạn như "a, b ,, d ,, f" thì sẽ tốt hơn khi sử dụng như sau:

$ str = implode (',', array_filter (array ('a', 'b', '', 'd', '', 'f')));

Các vấn đề liên quan