PHP में स्ट्रिंग की शुरुआत में जोड़ने के लिए किसी भी बराबर। =


103

बस अगर ऐसा कुछ है तो सोच रहा है। = एक स्ट्रिंग की शुरुआत में पाठ जोड़ने के लिए, जैसे:

$foo =. 'bar';

जो काम नहीं करता है।

संपादित करें: उदाहरण मूल रूप से था $foo =. $bar;जिसे हासिल किया जा सकता है$bar .= $foo;


मैं जेम्स के लिए प्रतिज्ञा करता हूं 'हालांकि उसे इसके लिए एक उत्तर
क्रिश्चियन

6
यह $fooकरने $barके बजाय करने के लिए append $barकरता है $foo। परिणाम समान है, लेकिन मुझे लगता है कि वह म्यूट करना चाहता है $foo
एरिक वी

इसका मतलब थोड़ा-सा ज़बान-इन-गाल कमेंट था (इसीलिए यह कमेंट है, जवाब नहीं)!
जेम्स एलार्डिस

1
ugh ... क्षमा करें, बुरा उदाहरण ... अभी तय है :)
yuttadhammo

जवाबों:



4

आप हमेशा अपना खुद का फंक्शन बना सकते हैं:

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

$stringवह टुकड़ा होगा जिसे आप प्रीपेन्ड करना चाहते हैं और $chunkवह टेक्स्ट होगा जो आप चाहते हैं कि उस पर कुछ लिखा हो।

आप कह सकते हैं कि चेक वैकल्पिक हैं, लेकिन ऐसा होने से आपको दुर्घटना से अशक्त होने की चिंता करने की आवश्यकता नहीं है।


1
धन्यवाद, आप सही हैं, हालांकि। यह निश्चित रूप से उतना आसान या तेज़ नहीं है जितना कुछ में बनाया गया है। यदि यह आसान बनाने में मदद करता है तो कॉपी और पेस्ट करने के लिए स्वतंत्र महसूस करें: D
हारून

7
अगर कुछ ऐसा है, !emptyतो यह हमेशा होता है isset, इस दोहरी जांच की कोई आवश्यकता नहीं है। इसके अलावा, चूंकि $chunkफ़ंक्शन का एक आवश्यक पैरामीटर है, यह जरूरत है कार्य करने के लिए प्रदान किया जाने वाला या PHP में शिकायत करेंगे। इसका मतलब यह है कि इस चेक को संक्षिप्त किया जा सकता है if ($chunk)(यह देखने के लिए कि क्या यह झूठा उर्फ "खाली" है)। लेकिन, अगर $chunkकुछ भी शामिल नहीं है, तो कुछ भी नहीं होगा। तो इस पूरे फ़ंक्शन बॉडी को संक्षिप्त किया जा सकता है return $string . $chunk। जिसका अर्थ है कि यह पूरा कार्य बहुत अनावश्यक है।
deceze

1
आपके पास एक चर सेट किया जा सकता है, लेकिन खाली भी हो सकता है। उदाहरण के लिए, "" के मान वाला एक चर रिक्त है, लेकिन सेट भी है।
आरोन

1
हां, लेकिन मैं कह रहा हूं कि आपका कार्य लिखने का एक बहुत ही महत्वपूर्ण तरीका है $foo . $bar। मैं आपको चुनौती देता हूं कि किसी भी महत्वपूर्ण मामले को खोजने के लिए आपका कार्य कुछ अलग करता है। :)
धोखेबाज़

3

मुझे पता है कि यह कुछ समय पहले पूछा / उत्तर दिया गया था, लेकिन यह जवाब प्रदान करना, क्योंकि यह कार्यात्मक रूप से समतुल्य है, इसके बावजूद यह एक असाइनमेंट ऑपरेटर नहीं है और किसी ने भी सामान्य स्ट्रिंग संघनन के लिए इसके उपयोग पर टिप्पणी नहीं की है।

आप स्ट्रिंग संयोजन के कार्यों के sprintf( प्रलेखन ) परिवार के उपयोग पर ध्यान देना चाह सकते हैं । यह असाइनमेंट ऑपरेटरों के साथ सिर्फ दो तारों के संयोजन की तुलना में बहुत अधिक स्वच्छता और प्रयोज्य प्रदान करता है।

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

दुर्भाग्य से, मुझे नहीं लगता कि स्प्रिंटफ () सरल कंसटेंट के रूप में तेज है। और यह निश्चित रूप से लगभग सिंटेक्स-फ्रेंडली के रूप में नहीं लगता है, या तो। देखें: stackoverflow.com/q/7147305/2430549
होल्डऑफ ह्यूंगर

सही, हालांकि यह सुनिश्चित नहीं है कि आप वाक्यविन्यास के अनुकूल कैसे हैं। जबकि यह उतना तीव्र या सरलीकृत नहीं है जितना कि संघटन। sprintfआमतौर पर कई भाषाओं में उपयोग किया जाता है। sprintfइसका उपयोग करने के लिए इसका स्थान और उद्देश्य है। जैसे। कई मूल्यों की कास्टिंग या कई इनपुट का उपयोग करते हुए sprintf, आपको आवश्यक होने पर सरल संयोजन की तुलना में अधिक कार्यक्षमता प्रदान करता है । देखें: 3v4l.org/8PWil लेकिन इसका उपयोग सम्‍मिलन के पूर्ण प्रतिस्थापन के रूप में नहीं किया जाना चाहिए।
fyrye

3

आप बिल्ट-इन फ़ंक्शन को लपेट सकते हैं substr_replace, जहां तर्क $ शुरुआत और $ लंबाई 0 पर सेट की जा सकती है, जो $ स्ट्रिंग में $ प्रतिस्थापन को प्रस्तुत करता है और परिणाम देता है, जैसे:

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;

यदि आप प्रक्रियात्मक प्रोग्रामिंग में हैं, तो यह है।


मुझे root_replace का उपयोग करने का शौक नहीं दिखता है; $string = $prefix.$string;फंक्शन में सिंपल करने से ट्रिक आ जाएगी।
पियरे-ओलिवियर वार्स

2

ब्लाकेथेप्टन की टिप्पणी को एक जवाब (धन्यवाद) में बदलना , चर नामों के लिए इसे अधिक करीने से करने का एक तरीका है, चर के संदर्भ का उपयोग करके निम्नानुसार है:

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

यदि आपका मूल चर नाम 12 वर्णों या उससे अधिक समय का है, तो एरिक वी द्वारा उत्तर पर टाइप करने से यह बच जाएगा ।

एक लाइन पर एक विकल्प:

$f = 'bar' . ($f = &$foo);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.