Php объединить две строки

Конкатенация строк в PHP

От автора: объединение строк — очень распространенная и полезная операция в PHP. Есть много способов, которыми вы можете соединить строки вместе, например, добавление или объединение их в какой-то другой точке. В этой краткой статье я научу вас конкатенации строк в PHP. Вы узнаете, как добавлять строки в PHP и как объединять строки в определенных местах.

Добавление строк в PHP

Объединение строк в PHP путем добавления на самом деле довольно просто. В PHP есть два строковых оператора, предназначенных для этой конкретной цели.

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

Вы можете использовать оператор конкатенационного присваивания, “.=” если хотите объединить строки и присвоить результат той же переменной. Это более короткий способ добавления аргумента с правой стороны к аргументу с левой стороны.

Вот пример, который показывает, как добавлять строки в PHP:

Онлайн курс «PHP-разработчик»

Изучите курс и создайте полноценный проект — облачное хранилище файлов

С нуля освоите язык программирования PHP, структурируете имеющиеся знания, а эксперты помогут разобраться с трудными для понимания темами, попрактикуетесь на реальных задачах. Напишете первый проект для портфолио.

Источник

Php объединить две строки

В PHP есть два оператора для работы со строками ( string ). Первый — оператор конкатенации (‘.’), который возвращает строку, представляющую собой соединение левого и правого аргумента. Второй — оператор присваивания с конкатенацией (‘ .= ‘), который присоединяет правый аргумент к левому. Для получения более полной информации ознакомьтесь с разделом Операторы присваивания.

$a = «Привет, » ;
$b = $a . «Мир!» ; // $b теперь содержит строку «Привет, Мир!»

$a = «Привет, » ;
$a .= «Мир!» ; // $a теперь содержит строку «Привет, Мир!»
?>

Смотрите также

User Contributed Notes 6 notes

As for me, curly braces serve good substitution for concatenation, and they are quicker to type and code looks cleaner. Remember to use double quotes (» «) as their content is parced by php, because in single quotes (‘ ‘) you’ll get litaral name of variable provided:

// This works:
echo «qwe < $a >rty» ; // qwe12345rty, using braces
echo «qwe» . $a . «rty» ; // qwe12345rty, concatenation used

// Does not work:
echo ‘qwerty’ ; // qwerty, single quotes are not parsed
echo «qwe $arty » ; // qwe, because $a became $arty, which is undefined

A word of caution — the dot operator has the same precedence as + and -, which can yield unexpected results.

Читайте также:  Python pip wheel failed with error

The above will print out «3» instead of «Result: 6», since first the string «Result3» is created and this is then added to 3 yielding 3, non-empty non-numeric strings being converted to 0.

To print «Result: 6», use parantheses to alter precedence:

» < $str1 >< $str2 > < $str3 >» ; // one concat = fast
$str1 . $str2 . $str3 ; // two concats = slow
?>
Use double quotes to concat more than two strings instead of multiple ‘.’ operators. PHP is forced to re-concatenate with every ‘.’ operator.

If you attempt to add numbers with a concatenation operator, your result will be the result of those numbers as strings.

echo «thr» . «ee» ; //prints the string «three»
echo «twe» . «lve» ; //prints the string «twelve»
echo 1 . 2 ; //prints the string «12»
echo 1.2 ; //prints the number 1.2
echo 1 + 2 ; //prints the number 3

Some bitwise operators (the and, or, xor and not operators: & | ^ ~ ) also work with strings too since PHP4, so you don’t have to loop through strings and do chr(ord($s[i])) like things.

See the documentation of the bitwise operators: https://www.php.net/operators.bitwise

Be careful so that you don’t type «.» instead of «;» at the end of a line.

It took me more than 30 minutes to debug a long script because of something like this:

The output is «axbc», because of the dot on the first line.

  • Операторы
    • Приоритет оператора
    • Арифметические операторы
    • Оператор присваивания
    • Побитовые операторы
    • Операторы сравнения
    • Оператор управления ошибками
    • Операторы исполнения
    • Операторы инкремента и декремента
    • Логические операторы
    • Строковые операторы
    • Операторы, работающие с массивами
    • Оператор проверки типа

    Источник

    implode

    Alternative signature (not supported with named arguments):

    Legacy signature (deprecated as of PHP 7.4.0, removed as of PHP 8.0.0):

    Join array elements with a separator string.

    Parameters

    Optional. Defaults to an empty string.

    The array of strings to implode.

    Return Values

    Returns a string containing a string representation of all the array elements in the same order, with the separator string between each element.

    Changelog

    Version Description
    8.0.0 Passing the separator after the array is no longer supported.
    7.4.0 Passing the separator after the array (i.e. using the legacy signature) has been deprecated.

    Examples

    Example #1 implode() example

    $array = [ ‘lastname’ , ’email’ , ‘phone’ ];
    var_dump ( implode ( «,» , $array )); // string(20) «lastname,email,phone»

    // Empty string when using an empty array:
    var_dump ( implode ( ‘hello’ , [])); // string(0) «»

    // The separator is optional:
    var_dump ( implode ([ ‘a’ , ‘b’ , ‘c’ ])); // string(3) «abc»

    Notes

    Note: This function is binary-safe.

    See Also

    • explode() — Split a string by a string
    • preg_split() — Split string by a regular expression
    • http_build_query() — Generate URL-encoded query string

    User Contributed Notes 14 notes

    it should be noted that an array with one or no elements works fine. for example:

    $a1 = array( «1» , «2» , «3» );
    $a2 = array( «a» );
    $a3 = array();

    echo «a1 is: ‘» . implode ( «‘,'» , $a1 ). «‘
    » ;
    echo «a2 is: ‘» . implode ( «‘,'» , $a2 ). «‘
    » ;
    echo «a3 is: ‘» . implode ( «‘,'» , $a3 ). «‘
    » ;
    ?>

    will produce:
    ===========
    a1 is: ‘1’,’2′,’3′
    a2 is: ‘a’
    a3 is: »

    It’s not obvious from the samples, if/how associative arrays are handled. The «implode» function acts on the array «values», disregarding any keys:

    $a = array( ‘one’ , ‘two’ , ‘three’ );
    $b = array( ‘1st’ => ‘four’ , ‘five’ , ‘3rd’ => ‘six’ );

    echo implode ( ‘,’ , $a ), ‘/’ , implode ( ‘,’ , $b );
    ?>

    outputs:
    one,two,three/four,five,six

    Can also be used for building tags or complex lists, like the following:

    ?>

    This is just an example, you can create a lot more just finding the right glue! 😉

    It might be worthwhile noting that the array supplied to implode() can contain objects, provided the objects implement the __toString() method.

    class Foo
    protected $title ;

    public function __construct ( $title )
    $this -> title = $title ;
    >

    public function __toString ()
    return $this -> title ;
    >
    >

    $array = [
    new Foo ( ‘foo’ ),
    new Foo ( ‘bar’ ),
    new Foo ( ‘qux’ )
    ];

    echo implode ( ‘; ‘ , $array );
    ?>

    will output:

    If you want to implode an array of booleans, you will get a strange result:
    var_dump ( implode ( » ,array( true , true , false , false , true )));
    ?>

    Output:
    string(3) «111»

    TRUE became «1», FALSE became nothing.

    If you want to implode an array as key-value pairs, this method comes in handy.
    The third parameter is the symbol to be used between key and value.

    function mapped_implode ( $glue , $array , $symbol = ‘=’ ) return implode ( $glue , array_map (
    function( $k , $v ) use( $symbol ) <
    return $k . $symbol . $v ;
    >,
    array_keys ( $array ),
    array_values ( $array )
    )
    );
    >

    echo mapped_implode ( ‘, ‘ , $arr , ‘ is ‘ );

    // output: x is 5, y is 7, z is 99, hello is World, 7 is Foo

    Sometimes it’s necessary to add a string not just between the items, but before or after too, and proper handling of zero items is also needed.
    In this case, simply prepending/appending the separator next to implode() is not enough, so I made this little helper function.

    function wrap_implode ( $array , $before = » , $after = » , $separator = » ) if( ! $array ) return » ;
    return $before . implode ( » < $after >< $separator > < $before >» , $array ) . $after ;
    >

    echo wrap_implode ([ ‘path’ , ‘to’ , ‘file.php’ ], ‘/’ );
    // «/path/to/file.php»

    $pattern = ‘#’ . wrap_implode ([ 4 , 2 , 2 ], ‘\d’ , ‘[-.]’ ) . ‘#’ ;
    echo $pattern , «\n» ; // #\d[-.]\d[-.]\d#
    echo preg_replace ( $pattern , ‘[REDACTED]’ , ‘The UFO appeared between 2012-12-24 and 2013.01.06 every night.’ );
    // ‘The UFO appeared between [REDACTED] and [REDACTED] every night.

    echo wrap_implode ([ ‘line’ , ‘by’ , ‘line’ ], ‘‘ , ‘‘ , ‘
    ‘ );
    // line
    by
    line

    It may be worth noting that if you accidentally call implode on a string rather than an array, you do NOT get your string back, you get NULL:
    var_dump ( implode ( ‘:’ , ‘xxxxx’ ));
    ?>
    returns
    NULL

    This threw me for a little while.

    Even handier if you use the following:

    $id_nums = array( 1 , 6 , 12 , 18 , 24 );

    $id_nums = implode ( «, » , $id_nums );

    $sqlquery = «Select name,email,phone from usertable where user_id IN ( $id_nums )» ;

    // $sqlquery becomes «Select name,email,phone from usertable where user_id IN (1,6,12,18,24)»
    ?>

    Be sure to escape/sanitize/use prepared statements if you get the ids from users.

    null values are imploded too. You can use array_filter() to sort out null values.

    $ar = array( «hello» , null , «world» );
    print( implode ( ‘,’ , $ar )); // hello,,world
    print( implode ( ‘,’ , array_filter ( $ar , function( $v )< return $v !== null ; >))); // hello,world
    ?>

    If you want to use a key inside array:

    Example:
    $arr=array(
    array(«id» => 1,»name» => «Test1»),
    array(«id» => 2,»name» => «Test2»),
    );

    echo implode_key(«,»,$arr, «name»);
    OUTPUT: Test1, Test2

    function implode_key($glue, $arr, $key) $arr2=array();
    foreach($arr as $f) if(!isset($f[$key])) continue;
    $arr2[]=$f[$key];
    >
    return implode($glue, $arr2);
    >

    It is possible for an array to have numeric values, as well as string values. Implode will convert all numeric array elements to strings.

    $test = implode ([ «one» , 2 , 3 , «four» , 5.67 ]);
    echo $test ;
    //outputs: «one23four5.67»
    ?>

    There is no mention of behavior on a empty array, so I tried it and here’s the result:

    $ar = array();
    $result = implode ( ‘,’ , $ar ); // Comma arbitrarily applied as the separator
    $is_result_empty = empty( $result );
    ?>

    $result:
    $is_result_empty: 1

    In other words, an empty string is the result.

    * Join pieces with a string recursively .
    *
    * @ param mixed $glue String between pairs ( glue ) or an array pair ‘s glue and key/value glue or $pieces.
    * @param iterable $pieces Pieces to implode (optional).
    * @return string Joined string
    */
    function double_implode($glue, iterable $pieces = null): string
    $glue2 = null;
    if ($pieces === null) $pieces = $glue;
    $glue = »;
    > elseif (is_array($glue)) list($glue, $glue2) = $glue;
    >

    $result = [];
    foreach ($pieces as $key => $value) $result[] = $glue2 === null ? $value : $key . $glue2 . $value;
    >
    return implode($glue, $result);
    >
    ?>
    Examples:
    $array = [‘ a ‘ => 1, ‘b’ => 2];
    $str = implode($array);
    $str = implode(‘ , ‘, $array);
    $str = implode([‘» ‘, ‘ keyword»>, ‘, $iterator);
    $str = implode([‘» ‘, ‘ foot»>+add a note

    Источник

Оцените статью