2013-06-28 7 views
5

मैं पहली बार PHP सीख रहा हूं और मुझे आश्चर्य की बात है कि भाषा स्ट्रिंग पर वृद्धि ऑपरेटर का उपयोग करने की अनुमति देती है।PHP में स्ट्रिंग्स पर वृद्धि ऑपरेटर का उपयोग कब करें?

 $foo = 'xyZ'; 
    print ++$foo; // prints xzA 

ट्यूटोरियल जो मैं इस विषय के आसपास पा सकता हूं केवल खिलौना उदाहरण पेश करता हूं। यदि आप ऐसी स्थिति का उल्लेख करते हैं जहां इस 'सुविधा' का उपयोग करना फायदेमंद है तो मैं आभारी रहूंगा।

अग्रिम धन्यवाद!

+1

यह एक नौटंकी, नहीं एक सुविधा है किसी भी पिन या पासवर्ड कभी भी दरार करने का इरादा नहीं है। इसलिए भाषा डिजाइन के पीछे "क्यों" का जवाब नहीं दे सकता है, सिवाय इसके कि इसे [पर्ल से ले जाया गया] (http://stackoverflow.com/questions/6458068/increment-and-decrement-strings-in-perl) – mario

+2

केवल समय मैं इसे उपयोगी होने के बारे में सोच सकता हूं यदि तारों की एक श्रृंखला को सशर्त के रूप में परीक्षण किया जा रहा था। प्रत्येक के लिए एक परीक्षण लिखने के बजाय, प्रत्येक के परीक्षण के लिए एक लूप का उपयोग किया जाएगा। – asimes

+0

एमएस एक्सेल कॉलम आईडी 'ज़ेड', 'एए' के ​​माध्यम से 'ए' के ​​माध्यम से 'ए' के ​​माध्यम से 'ए', 'बीजे' के माध्यम से 'बीए', इत्यादि .... इस चरित्र वृद्धि पैटर्न से मेल खाते हैं; तो एक्सेल वर्कशीट्स –

उत्तर

3

I would be grateful if you mention a situation where using this 'feature' is beneficial.

यह एक बहुत ही उपयोगी सुविधा हो सकता है ..

उदाहरण

$guess = "21661093e56e24cd60b10092005c4ac7"; 
$next = "aaaa"; 
$count = 0; 
while(md5($next) !== $guess) { 
    $next ++; 
    $count ++; 
} 
printf("Found `%s` after %s loops", $next, number_format($count)); 

आउटपुट

Found `baba` after 17,602 loops 

मैं जल्द ही वैसे भी

0

http://php.net/manual/en/language.operators.increment.php पर "उदाहरण # 1 अक्षांश परिचालनों पर वर्णित ऑपरेशंस" नामक अनुभाग पर एक नज़र डालें - आप स्ट्रिंग में वर्ण और अनुक्रम जोड़ने के लिए वृद्धि ऑपरेटर का उपयोग कर सकते हैं।

+1

के साथ काम करते समय चरित्र वृद्धि बढ़ाना बेहद उपयोगी है। यह नहीं पूछा जा रहा है। –

+0

मेरी माफ़ी, मुझे उम्मीद है कि यह सुविधा के कुछ बुनियादी उपयोगों पर कुछ प्रकाश डालेगा। –

0

एक चरखी वास्तव में एक संख्या है। आप ASCII तालिका में एक नज़र डालनी चाहिए http://en.wikipedia.org/wiki/ASCII

php प्रलेखन http://php.net/manual/en/function.chr.php

$test = 'a'; 
$test++; 
echo($test); 

चरित्र को

Converst नंबर पर आप ASCII तालिका में देख सकते हैं 'एक' = 97 और की की संख्यात्मक प्रस्तुति 'बी' = 98 'बी' प्रदर्शित होता है

+2

यह वास्तव में रोलिंग ओवर की व्याख्या नहीं करता है। अर्थात। 'Z' बढ़ाना' aa' देता है। – Jim

+0

आप बिल्कुल सही हैं –

0

the documentation से लिया गया, PHP वर्ण चर पर अंकगणितीय संचालन से निपटने के दौरान पर्ल के सम्मेलन का पालन करता है:

उदाहरण के लिए, PHP और पर्ल $ a = 'Z' में; एक ++ $; $ ए 'ए' में बदल जाता है, जबकि सी ए = 'जेड' में; एक ++; '[' में बदल जाता है ('Z' का ASCII मान 9 0 है, ASCII मान '[' 9 1 है)। ध्यान दें कि चरित्र चर को बढ़ाया जा सकता है लेकिन कम नहीं किया गया है और यहां तक ​​कि केवल सादा ASCII वर्ण (ए-जेड और ए-जेड) समर्थित हैं। अन्य वर्ण चरों को बढ़ाने/घटाने का कोई प्रभाव नहीं पड़ता है, मूल स्ट्रिंग अपरिवर्तित है।

जबकि मैंने व्यक्तिगत रूप से इस सुविधा का उपयोग नहीं किया है, मैं सी के विरोध में पर्ल के सम्मेलन का पालन करके कुछ लाभों के बारे में सोच सकता हूं। यह एएससीआईआई मूल्य को बढ़ाने के विरोध में अल्फा रेंज के भीतर बढ़ रहा है।

अल्फा रेंज में रहकर, अनिवार्य रूप से हम आधार 26 numeral system (अक्षरों का उपयोग करके) के बारे में बात कर रहे हैं। तो 9 की वृद्धि 10 (आगे बढ़ें), zaa पर वृद्धि।

दिमाग में क्या आता है तुरंत चरित्र हैश अनुक्रम होंगे।

public static function nextSeed() { 
    // $seed = abc 
    return strtolower(++self::$seed); 
    // $seed = abd 
} 

संभावना बीज पीएचपी से बाहर प्रबंधित किया जाएगा, वहीं यह भी लाभकारी पीएचपी देशी रूप प्रदान करता है क्या अन्यथा अधिक कोड की आवश्यकता होगी है।

अन्य उपयोग के मामलों:

  • बेस-26 अंक प्रणाली प्रतिनिधित्व
  • गिना जा रहा है चरित्र मतभेद
  • एन्क्रिप्शन
संबंधित मुद्दे