2012-01-11 10 views
23

संभव डुप्लिकेट:
PHP syntax for dereferencing function resultकॉलिंग PHP विस्फोट और पहले तत्व का उपयोग?

मैं एक स्ट्रिंग है, जो की तरह 1234 # 5678 लग रहा है। अब मैं इसे कॉल कर रहा हूं:

$last = explode("#", "1234#5678")[1] 

यह काम नहीं कर रहा है, कुछ वाक्यविन्यास त्रुटि है ... लेकिन कहां? मुझे उम्मीद है कि $last में 5678 है। क्या यह PHP में काम नहीं कर रहा है?

+3

PHP में यह संभव नहीं है। –

+4

आप PHP 5.4 में यह (एरे डीरफ्रेंसिंग) करने में सक्षम होंगे, वर्तमान 5.3 –

उत्तर

26

सरणी अपसंदर्भन वर्तमान पीएचपी संस्करणों (दुर्भाग्य से) में संभव नहीं है। लेकिन अगर आप सीधे चर सरणी तत्वों आवंटित करने के लिए list[docs] उपयोग कर सकते हैं:

list($first, $last) = explode("#", "1234#5678"); 

अद्यतन

पीएचपी 5.4 (जारी की 01 मार्च 2012) के बाद से यह array dereferencing का समर्थन करता है।

+3

और यदि आपके पास स्ट्रिंग में कई मान हैं तो आप $ अंतिम = अंत (विस्फोट ('#', $ string) का उपयोग कर सकते हैं; –

+0

सूची के लिए वैकल्पिक 'सूची (, $ अंतिम) = .... 'है। तब जब आपको इसकी आवश्यकता नहीं होती है तो आपके पास पहली चर लटकती नहीं होगी। –

8

अधिकांशतः PHP वाक्यविन्यास द्वारा भ्रमित हो रहा है। बस एक सरणी चर को explode का परिणाम निर्दिष्ट करेंगे और फिर उस पर सूचकांक का उपयोग करें:

$arr = explode("#", "1234#5678"); 
$last = $arr[1]; 
+1

वाह में नहीं, जो बेकार है: डी ... ठीक है, अब मुझे पता है। – EOB

+0

स्नैप करें! Dammit, आप जीत :) –

3

पीएचपी एक छोटे से मंद हो सकता है। आप शायद दो पंक्तियों पर ऐसा करने की जरूरत:

$a = explode("#", "1234#5678"); 
$last = $a[1]; 
5

आप ऐसा नहीं कर सकते:

explode("#", "1234#5678")[1] 

क्योंकि explode एक समारोह, नहीं एक सरणी है। यह निश्चित रूप से एक सरणी देता है, लेकिन PHP में आप फ़ंक्शन को सरणी के रूप में तब तक नहीं मान सकते जब तक यह किसी सरणी में सेट न हो जाए।

यह है कि यह कैसे करना है:

$last = explode('#', '1234#5678'); 
$last = $last[1]; 
6

यहाँ कैसे एक पंक्ति के लिए नीचे कदम उठाएं:

$last = current(array_slice(explode("#", "1234#5678"), indx,1));

कहाँ indx सूचकांक आप सरणी में चाहते हैं, में अपने उदाहरण यह था 1.

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