2012-10-24 25 views
8

संपादित करें: नीचे समारोह अब संक्षिप्त नाम सही ढंग से लागू @Asad के समाधानपीएचपी संख्या abbreviator

हाय मैं वर्तमान में एक तरह बटन पर काम कर रहा हूँ, मुझे मिल गया है सभी आधार अच्छी तरह से काम कर रहा कार्यक्षमता लेकिन मैं शुरू कर दिया है करता है संख्या संक्षेप कोड और एक दीवार मारा क्योंकि मैं यह नहीं समझ सकता कि संक्षेप को संक्षिप्त कैसे बनाया जाए।

मेरे पास एक संख्या है, उदा। 1000, 1230, 1500, 154000, 1500000, 1000000

और मैं उन्हें संक्षेप में प्रारूपित करना चाहता हूं। यानी

अगर यह एक हजार 1k, 1.1K, 2k, 10k, 10.5k आदि है, तो ...

और इतने पर दसियों, सैकड़ों हजारों और लाखों लोगों, आदि के लिए ...

फिलहाल मेरे पास निम्न कार्य है लेकिन यह पर्याप्त विशिष्ट नहीं है:

function abreviateTotalCount($value) 
{ 

    $abbreviations = array(12 => 'T', 9 => 'B', 6 => 'M', 3 => 'K', 0 => ''); 

    foreach($abbreviations as $exponent => $abbreviation) 
    { 

     if($value >= pow(10, $exponent)) 
     { 

      return round(floatval($value/pow(10, $exponent))).$abbreviation; 

     } 

    } 

} 

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

+1

यह एक बहुत अच्छा समाधान है, 'पर्याप्त विशिष्ट नहीं' से आपका क्या मतलब है? –

+0

आपके वर्तमान कोड के साथ क्या गलत है? क्या यह काम नहीं करता है? –

+0

@ आसाद हाय, दुर्भाग्य से यह केवल उन संक्षेपों के पूरे संस्करण लौटाता है जिन्हें मैं चाहता हूं। यानी 1k, 2k, लेकिन –

उत्तर

5

आप दशमलव स्थानों रखने के लिए चाहते हैं, intval के बजाय floatval का उपयोग करें:

return round(floatval($value/pow(10, $exponent)),1).$abbreviation; 

नाव प्रतिनिधित्व और 1 दशमलव स्थान तक राउंड हो जाता है।

+0

उसने ऐसा किया। धन्यवाद, जब यह मुझे अनुमति देता है तो जवाब स्वीकार करेगा –

1
intval के बजाय

() से विचार ले, number_format() का उपयोग आप दशमलव स्थानों के वांछित राशि के साथ एक नंबर देने के लिए कर सकते हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^