Лучший способ конкатенации строк в PHP с пробелами

Мне нужно объединить неопределенное количество строк, и я хотел бы пространство между двумя соседними строками. Вот так!--0-->.

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

6 ответов


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


$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"

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");

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

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

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

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


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

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

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

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