2011-08-18 50 views
68

Chỉ cần tự hỏi nếu có cái gì đó như thế nào. = Để thêm văn bản vào đầu của một chuỗi, ví dụ .:Bất kỳ giá trị nào tương đương với. = Để thêm vào đầu chuỗi trong PHP?

$foo =. 'bar'; 

mà không hoạt động.

Edit: ví dụ ban đầu $foo =. $bar; mà có thể đạt được với $bar .= $foo;

+4

'$ bar. = $ Foo'? –

+0

Tôi xác nhận cho James 'mặc dù anh ta nên viết một câu trả lời cho nó ... – Christian

+4

Điều đó gắn thêm '$ foo' vào' $ bar', thay vì thêm '$ bar' vào' $ foo'. Kết quả là tương tự, nhưng tôi nghĩ anh ta muốn thay đổi '$ foo'. –

Trả lời

98

Nope. Nhưng bạn có thể làm

$foo = "bar" . $foo 
+3

'.', không phải' + '... –

+7

Urgh bạn nói đúng. Gần đây tôi đã làm quá nhiều JavaScript. –

+1

vâng, nhưng khi nó trông giống như: '$ foo ['bar'] ['bork'] [$ bork] = 'bar'. $ Foo ['bar'] ['bork'] [$ bork];' bạn bắt đầu tự hỏi tại sao không chỉ có một lối tắt như. = – yuttadhammo

-2
$foo = "Some Foo Text"; 
$bar = "Some Bar Text"; 

    echo $foo.$bar // Some Foo TextSome Bar Text 
    echo $bar.$foo // Some Bar TextSome Foo Text 

$foobar = $foo.$bar 
$boofar = $bar.$foo 
3

Bạn luôn có thể làm cho chức năng của riêng bạn cho rằng:

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

$string sẽ là mảnh mà bạn muốn thêm vào trước và $chunk sẽ là văn bản mà bạn muốn một cái gì đó được thêm vào nó.

Bạn có thể nói kiểm tra là tùy chọn, nhưng bằng cách có điều đó trong đó bạn không cần phải lo lắng về việc vượt qua giá trị null một cách tình cờ.

+0

Thực hiện tốt, nhưng nó không thực sự làm mọi việc dễ dàng hơn :) – yuttadhammo

+1

Cảm ơn, bạn đã đúng. Nó chắc chắn không dễ dàng hoặc nhanh chóng như một cái gì đó được xây dựng in Hãy thoải mái sao chép và dán nếu điều đó giúp làm cho nó dễ dàng hơn: D – Aaron

+4

Nếu một cái gì đó là '! Empty' nó luôn luôn là' isset', không cần kiểm tra này. Hơn nữa, vì '$ chunk' là một tham số bắt buộc của hàm, nó * cần * được chuyển tới hàm hoặc PHP sẽ khiếu nại. Điều này có nghĩa là séc này có thể được viết tắt thành 'if ($ chunk)' (để xem nếu nó là * falsy * a.k.a. "empty"). Nhưng, nếu '$ chunk' không chứa bất cứ thứ gì, thì sẽ chẳng có gì xảy ra cả. Vì vậy, toàn bộ cơ quan chức năng này có thể được viết tắt thành 'return $ string. $ chunk'. Có nghĩa là toàn bộ chức năng này là khá không cần thiết. – deceze

2

Tôi biết điều này đã được hỏi/trả lời cách đây không lâu, nhưng cung cấp câu trả lời này vì nó có chức năng tương đương mặc dù nó không phải là một nhà điều hành chuyển nhượng và không ai nhận xét về cách sử dụng của nó cho nối chuỗi chung.

Bạn có thể muốn xem xét việc sử dụng các dòng chức năng sprintf (documentation) cho nối chuỗi. Nó cung cấp nhiều hơn nữa sanitization và khả năng sử dụng hơn là chỉ kết hợp hai dây với các nhà khai thác chuyển nhượng.

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

Tôi thường sử dụng vsprintf, vì làm việc với mảng dễ quản lý vị trí giá trị hơn so với đối số riêng lẻ.

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

Ngoài ra với một mảng giá trị, người ta có thể chỉ đơn giản là implode tập hợp kết quả của giá trị cho nối chuỗi đơn giản.

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

Bạn có thể bọc được xây dựng trong chức năng substr_replace, nơi các đối số $ bắt đầu và $ chiều dài có thể được thiết lập để 0, mà prepends thay thế $ đến $ chuỗi và trả về kết quả, như vậy:

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

Một cách sử dụng ví dụ của hàm helper sẽ là:

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

Nếu bạn là thành lập trình thủ tục, đó là.

+0

Tôi không thấy sự quan tâm của việc sử dụng substr_replace; làm đơn giản '$ string = $ prefix. $ string;' trong hàm sẽ thực hiện thủ thuật. –

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