2014-06-30 8 views
9

में अंतराल समस्या बहुत कम है।ट्विग टेम्पलेट

मुझे पूर्णांक कुंजी के साथ एक सरणी मिली है, और पैरामीटर जो स्ट्रिंग है। मैं उस पैरामीटर का उपयोग करके उस सरणी का तत्व प्राप्त करना चाहता हूं।

{{ variable }}variable == (string) "32"; के ट्विग intval - (int)"32" में कैसे प्राप्त करें?

+2

आप यकीन है कि यह नहीं है आवेदन तर्क हैं और टहनी प्रवेश करने से पहले किया जाना चाहिए? – ToBe

उत्तर

6

ट्विग में फ़िल्टर हैं। उनमें से एक यह है:

http://twig.sensiolabs.org/doc/filters/number_format.html

{{ variable|number_format }} 

यदि आप एक स्ट्रिंग पर गणित कर रहे हैं, यह स्वतः ही एक interger को वैसे भी, फिर भी डाली जाएगी!

+3

अगर मैं गलत हूं तो मुझे सही करें, लेकिन यहां आप ओपी की समस्या को उलटा कर रहे हैं। '{{variable | number_format}} 'int को स्ट्रिंग में परिवर्तित कर रहा है, जो हां, समस्या हल करता है, लेकिन दूसरी तरफ ... – xDaizu

+4

मुझे विश्वास नहीं है कि यह सही है। मैंने अभी इसका परीक्षण किया है और "number_format" फ़िल्टर स्ट्रिंग को int में परिवर्तित नहीं करता है। – Cninroh

+0

@xDaizu के रूप में सही ढंग से वर्णित है, यह एक स्ट्रिंग में एक फ्लोट को परिवर्तित कर रहा है। Http://php.net/number_format के साथ-साथ ट्विग फ़ंक्शन केवल एक रैपर – lordrhodos

5

आप एक चर के रूप में एक चर के रूप में एक सरणी का उपयोग कर सकते हैं: myArray[myKey]। इससे कोई फर्क नहीं पड़ता कि सरणी कुंजी पूर्णांक हैं (उदा। 32) या संबंधित तार ("32"), या myKey एक पूर्णांक या स्ट्रिंग है या नहीं। इन संयोजनों के सभी काम करना चाहिए (see TwigFiddle):

वैध युक्त तार:

{% set myArray = { 
    1: 'first', 
    '2': 'second', 
} %} 

{% set keyOneInt = 1 %} 
{% set keyOneStr = '1' %} 
{% set keyTwoInt = 2 %} 
{% set keyTwoStr = '2' %} 

{# These all print 'first' #} 
{{ myArray.1 }} 
{{ myArray[1] }} 
{{ myArray['1'] }} 
{{ myArray[keyOneInt] }} 
{{ myArray[keyOneStr] }} 

{# These all print 'second' #} 
{{ myArray.2 }} 
{{ myArray[2] }} 
{{ myArray['2'] }} 
{{ myArray[keyTwoInt] }} 
{{ myArray[keyTwoStr] }} 

ऊपर कोड की तीसरी लाइन पर, स्ट्रिंग कुंजी '2' वास्तव में 2 पूर्णांक, PHP's documentation of arrays राज्य की तरह डाली है दशमलव पूर्णांक, जब तक संख्या + साइन से पहले है, तो पूर्णांक प्रकार पर डाली जाएगी। जैसे कुंजी "8" वास्तव में के तहत संग्रहीत किया जाएगा। दूसरी तरफ "08" कास्ट नहीं होगा, क्योंकि यह मान्य दशमलव पूर्णांक नहीं है।

यदि किसी कारण से आपको एक पूर्णांक की आवश्यकता है, तो आप उस पर गणित संचालन करके एक स्ट्रिंग को एक int में डाल सकते हैं - उदा। variable * 1 (= "32" * 1) या variable + 0 (= "32" + 0)।