Лучший способ объединить строки в PHP с пробелами между - PullRequest
9 голосов
/ 09 ноября 2011

Мне нужно объединить неопределенное количество строк, и я хотел бы пробел между двумя смежными строками.Примерно так: a b c d e f.

Кроме того, я не хочу ставить начальные или конечные пробелы, как лучше всего это сделать в PHP?

Ответы [ 6 ]

30 голосов
/ 09 ноября 2011

Вы имеете в виду $str = implode(' ', array('a', 'b', 'c', 'd', 'e', 'f'));?

4 голосов
/ 09 ноября 2011
$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 голосов
/ 01 февраля 2013

Простой способ:

$string="hello" . " " . "world";
3 голосов
/ 09 ноября 2011
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");
1 голос
/ 16 июня 2016

Я просто хочу добавить к ответу deviousdodo, что если есть случай, когда в массиве есть пустые строки, и вы не хотите, чтобы они появлялись в объединенной строке, например, "a, b ,, d ,,f "тогда лучше использовать следующее:

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

1 голос
/ 09 ноября 2011

, учитывая, что у вас есть все эти строки, собранные в массив, способ сделать это может быть через предложение foreach, например:

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

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

таким образом вы можете контролировать процесс будущих изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...