2012-03-17 11 views
8

में पाइप साइन इन मैं 2 चर को जोड़ना चाहता था, और त्रुटि से मैंने एक और कोड टाइप किया और मुझे एक अजीब परिणाम मिला।PHP कोड

यह वही कोड की तरह लग रहा है:

echo 'Hello World' | 'test'; 

Result : |e|o World 

क्या पाइप संकेत करता है, तो श्रेणीबद्ध नहीं करते हैं?

+2

http://www.php.net/manual/en/language.operators.bitwise.php –

+1

किस भाषा में '|' concatenate करता है? –

+2

जहां तक ​​मुझे पता है, अधिकांश भाषा कॉन्सट स्ट्रिंग के लिए '|' का उपयोग नहीं करती है। आम तौर पर इसका उपयोग '.' या' + ' – Rezigned

उत्तर

5

PHP manual

के अनुसार "|" एक "bitwise या" है। बिटवाई ऑपरेटर एक पूर्णांक के भीतर विशिष्ट बिट्स के मूल्यांकन और हेरफेर की अनुमति देते हैं।

Example   Name       Result 
$a | $b  Or (inclusive or)  Bits that are set in either $a or $b are set. 

उदाहरण:

$a = 9; 
$b = 10; 
echo $a | $b; 

यह आउटपुट संख्या 11 के रूप में निम्नानुसार होगा:

         1 Byte (8 bits) 
Place Value   128 64 32 16 8 4 2 1 
$a      0  0  0  0 1 0 0 1 = 9 
$b      0  0  0  0 1 0 1 0 = 10 
$a | $b     0  0  0  0 1 0 1 1 = 11 

आप हम 3 बिट्स निर्धारित किया है देखते हैं तो 8, 2 में, और 1 स्तंभ .. उन्हें 8 + 2 + 1 जोड़ें और आपको 11.

केवल स्ट्रिंग कॉन्सटेनेशन के लिए डॉट . ऑपरेटर का उपयोग करें।

आशा है कि यह स्पष्ट करता है।

+0

मुझे समझने के लिए शानदार तरीका .. मैं इतना उलझन में था क्यों 1 | 1 = 2, और 1 | 3 = 3? और तुमने मुझे अच्छी तरह सिखाया। भगवान आपका भला करे :) – MFarooqi

5

यह OR बिटवाइज़ ऑपरेटर

आप dot

echo "ABC" . "DEF"; 

OR बिटवाइज़ उपयोग के उदाहरण का उपयोग करना चाहिए आप स्ट्रिंग concat चाहते हैं

// base 16 - result in 0x03 
$result = 0x01 | 0x02; 

// base 2 
0000 0001 
0000 0010 
--------- 
0000 0011 
1

मुझे लगता है कि होता है कि यह एक बिटवाइज़ है या

3

वह | का अर्थ है 'bitwise OR', जो तारों को बाइनरी में परिवर्तित करेगा, फिर लॉजिकल का उपयोग करके परिणाम की गणना करने के लिए उन्हें एक दूसरे पर ओवरले करें या प्रत्येक स्थिति के लिए यानी यदि स्ट्रिंग के पास उस स्थिति में 1 है, तो परिणाम 1 होगा, अन्यथा , आपको 0

इस मामले में, यह प्रत्येक चरित्र के संख्यात्मक एसीआईआई चरित्र कोड के साथ ऐसा कर रहा है, जो कभी-कभी नए चरित्र कोड और कभी-कभी कचरे के लिए जाता है, जो प्रस्तुत नहीं करेगा। यही कारण है कि 'हैलो वर्ल्ड' की शुरुआत गड़बड़ हो गई है, जहां यह 'टेस्ट' के साथ ओवरलैड है, लेकिन अंत ठीक है क्योंकि उस बिंदु पर किसी अन्य स्ट्रिंग द्वारा इसमें कोई भी जोड़ा नहीं गया है। मैनुअल से अधिक विस्तृत उदाहरण के लिए here देखें (एक्सओआर का उपयोग करता है, लेकिन एक ही विचार)।

उपयोग करें। concatenation के लिए।