2009-04-05 13 views
11

यदि मेरे पास PHP में एक चर है जिसमें 0001 है और मैं इसमें 1 जोड़ता हूं, तो परिणाम 0002 के बजाय 2 है।PHP में, मैं शून्य-गद्देदार संख्यात्मक स्ट्रिंग में कैसे जोड़ूं और शून्य पैडिंग को संरक्षित करूं?

मैं इस समस्या को कैसे हल करूं?

उत्तर

21
$foo = sprintf('%04d', $foo + 1); 
+0

धन्यवाद, पूरी तरह से काम किया। – Ryan

8

एक और विकल्प str_pad() फ़ंक्शन है।

$text = str_pad($text, 4, '0', STR_PAD_LEFT); 
12

यह शायद मदद मिलेगी आप PHP डेटा प्रकार को समझने के लिए और वे कैसे प्रभावित कर रहे हैं जब आप विभिन्न प्रकार के चर के संचालन करते हैं। आप कहते हैं कि आपके पास "PHP में एक वैरिएबल 0001" है, लेकिन वह चर किस प्रकार है? शायद एक स्ट्रिंग, "0001", क्योंकि एक पूर्णांक में वह मान नहीं हो सकता है (यह केवल 1 है)। तो जब आप ऐसा करते हैं:

echo ("0001" + 1); 

... + ऑपरेटर कहते हैं, "हम्म, कि एक स्ट्रिंग और एक पूर्णांक है मैं एक स्ट्रिंग और एक पूर्णांक जोड़ने के बारे में पता नहीं है लेकिन मुझे कैसे पता चलेगा।। एक int में एक स्ट्रिंग को कन्वर्ट करने के लिए, और उसके बाद दो इन्ट्स एक साथ जोड़ें, तो मुझे ऐसा करने दें, "और फिर यह" 0001 "से 1 में परिवर्तित हो जाता है। क्यों? चूंकि स्ट्रिंग को एक पूर्णांक में कनवर्ट करने के लिए PHP नियम कहते हैं कि स्ट्रिंग में अग्रणी शून्यों की संख्या को त्याग दिया जाता है। जिसका अर्थ है कि स्ट्रिंग "0001" बन जाती है 1.

फिर + कहता है, "अरे, मुझे पता है कि 1 और 1 को कैसे जोड़ना है। यह 2 है!" और उस कथन का आउटपुट 2.

+0

आपने समस्या का समाधान नहीं किया, लेकिन अच्छी तरह से समझाया। :) – DanMan

2
<?php 
#how many chars will be in the string 
$fill = 6; 
#the number 
$number = 56; 
#with str_pad function the zeros will be added 
echo str_pad($number, $fill, '0', STR_PAD_LEFT); 
// The result: 000056 
?> 
संबंधित मुद्दे