PHP에서 문자열의 시작 부분에 추가하기 위해. =에 해당하는 것이 있습니까?


103

문자열의 시작 부분에 텍스트를 추가하기 위해. =와 같은 것이 있는지 궁금합니다. 예 :

$foo =. 'bar';

작동하지 않습니다.

편집 : 예는 원래되었다 $foo =. $bar;달성 할 수있는$bar .= $foo;


나는 제임스를 보증합니다 '그가 그것에 대한 답을 써야했지만…
— Christian

6
추가 그 $foo에게 $bar, 대신에 붙이는의 $bar에 $foo. 결과는 비슷하지만 $foo.
— Eric V

그것은 약간의 혀를 씹는 댓글 (답이 아닌 댓글 인 이유)을 의미했습니다!
— James Allardice

1
죄송합니다 ... 우, 나쁜 예 ... 고정 해주기 :
— yuttadhammo

답변:


161

아니. 하지만 당신은 할 수 있습니다

$foo = "bar" . $foo

4

항상 자신의 기능을 만들 수 있습니다.

function prepend($string, $chunk) {
     if(!empty($chunk) && isset($chunk)) {
        return $string.$chunk;
     }
     else {
        return $string;
     }
}

$string 앞에 추가하고 싶은 부분이 될 것입니다. $chunk 될 것이고 그 위에 무언가를 추가하려는 텍스트가 될 것입니다.

검사가 선택 사항이라고 말할 수 있지만 거기에 있으면 실수로 null 값을 전달하는 것에 대해 걱정할 필요가 없습니다.


1
고마워, 그래도 맞아. 그것은 쉽게로 확실히 아니다 또는 고속 내장 뭔가 그게 쉽게하는 데 도움을주는 경우 복사 및 붙여 넣기 자유롭게로 :. D
— 아론

7
무언가가 !empty항상 있다면 isset이 이중 확인이 필요하지 않습니다. 이후 또한, $chunk함수의 필수 파라미터이고, 그것은 필요 함수에 전달되도록하거나 PHP 불평한다. 즉,이 검사는 약어로 표시 될 수 있습니다 if ($chunk)( 거짓 일명 "비어 있음"인지 확인하기 위해). 그러나 $chunk아무것도 포함하지 않으면 아무 일도 일어나지 않습니다. 따라서이 전체 기능 본문은 return $string . $chunk. 즉,이 모든 기능이 매우 불필요합니다.
— deceze

1
변수를 설정할 수 있지만 비어있을 수도 있습니다. 예를 들어, 값이 ""인 변수는 비어 있지만 설정되어 있습니다.
— Aaron

1
예, 그러나 귀하의 함수는 $foo . $bar. 나는 당신의 기능이 다른 일을하는 중요한 경우를 찾도록 도전합니다. :)
— deceze

3

나는 이것이 얼마 전에 질문 / 답변을 받았음을 알고 있지만 할당 연산자가 아니고 일반 문자열 연결에 대한 사용법에 대해 아무도 언급하지 않았음에도 불구하고 기능적으로 동일 하므로이 대답을 제공합니다.

문자열 연결을 위해 sprintf( documentation ) 함수 계열의 사용을 조사 할 수 있습니다 . 두 문자열을 할당 연산자와 결합하는 것보다 훨씬 더 많은 위생과 유용성을 제공합니다.

$foo = 'foo';

$append = sprintf('%1$s%2$s', $foo, 'bar');
var_dump($append);
/* string(6) "foobar" */

$prepend = sprintf('%1$s%2$s', 'bar', $foo);
var_dump($prepend);
/* string(6) "barfoo" */

$prependInvert = sprintf('%2$s%1$s', $foo, 'bar');
var_dump($prependInvert);
/* string(6) "barfoo" */

$wrap = sprintf('%2$s%1$s%2$s', $foo, 'bar');
var_dump($wrap);
/* string(6) "barfoobar" */

vsprintf배열 작업이 개별 인수보다 값 위치를 관리하기 쉽기 때문에 일반적으로를 사용 합니다.

$vprepend = vsprintf('%2$s%1$s', array('foo', 'bar'));
var_dump($vprepend);
/* string(6) "barfoo" */

또한 값 배열을 사용하여 implode간단한 문자열 연결에 대한 결과 값 집합을 간단히 만들 수 있습니다 .

 var_dump(implode('', array('bar', 'foo')));
 /* string(6) "barfoo" */

불행히도 sprintf ()가 단순한 연결만큼 빠르다고 생각하지 않습니다. 그리고 확실히 구문 친화적 인 것 같지는 않습니다. 참조 : stackoverflow.com/q/7147305/2430549
— HoldOffHunger 2018

정확하지만 구문 친화적이라는 의미는 확실하지 않습니다. 연결만큼 빠르거나 단순하지는 않지만. sprintf일반적으로 여러 언어에서 사용됩니다. sprintf사용시기에 대한 위치와 목적이 있습니다. 예. 여러 값을 캐스팅하거나를 사용하여 여러 입력을 적용하면 필요할sprintf 때 단순한 연결보다 더 많은 기능을 제공 합니다 . 참조 : 3v4l.org/8PWil 그러나 연결을위한 완전한 대체물로 사용해서는 안됩니다.
— fyrye

3

내장 함수를 래핑 할 수 있습니다 substr_replace. 여기서 $ start 및 $ length 인수를 0으로 설정하면 $ replacement를 $ string 앞에 추가하고 결과를 반환합니다.

function prepend(& $string, $prefix) {
    $string = substr_replace($string, $prefix, 0, 0);
}

도우미 함수의 사용 예는 다음과 같습니다.

$email_message = "Jonathan";
$appropriate_greeting = "Dear ";
prepend($email_message, $appropriate_greeting);
echo $email_message;

절차 적 프로그래밍에 관심이 있다면 그렇습니다.


나는 substr_replace를 사용하는 것에 관심이 없다고 생각합니다. $string = $prefix.$string;함수에서 간단한 작업을 수행하면 트릭을 수행 할 수 있습니다.
— Pierre-Olivier Vares

2

선반 Blakethepatton의 의견을 답변 (감사합니다)에, 방법은 더 이상 변수 이름을 더 깔끔하게 이렇게하는 것은 사용하는 것입니다 참조 다음과 같이 변수를 :

$f = &$foo; $f = "bar{$f}";

이것은 Eric V 의 대답 을 입력하는 것을 저장합니다. 원래 변수 이름이 12 자 이상인 경우 .

한 줄의 대안 :

$f = 'bar' . ($f = &$foo);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.