2010-02-15 11 views
7

मैं explode() द्वारा लौटाए गए सरणी में तुरंत तत्वों का उपयोग क्यों नहीं कर सकता?मैं तुरंत विस्फोटित सरणी तत्व का उपयोग क्यों नहीं कर सकता?

उदाहरण के लिए, इस काम नहीं करता है:

$username = explode('.',$thread_user)[1]; 
//Parse error: syntax error, unexpected '[ 

लेकिन इस कोड है:

$username = explode('.',$thread_user); 
$username = $username[1]; 

मैं नहीं आमतौर पर PHP में कार्यक्रम है, इसलिए यह मेरे लिए नहीं बल्कि भ्रामक है।

उत्तर

4

असल में, PHP बस इस वाक्यविन्यास का समर्थन नहीं करता है। जावास्क्रिप्ट जैसी भाषाओं में (उदाहरण के लिए), पार्सर अधिक जटिल घोंसले/चेनिंग ऑपरेशंस को संभाल सकता है, लेकिन PHP उन भाषाओं में से एक नहीं है।

+2

^असली जवाब। यहां तक ​​कि यदि आप एक ऐसा फ़ंक्शन लिखते हैं जो एक परिवर्तनीय सरणी देता है, तब भी आप फ़ंक्शन कॉल को इंडेक्स नहीं कर सकते हैं (जैसा कि जेम्स का जवाब आपको विश्वास करने के लिए प्रेरित कर सकता है), क्योंकि यह सिंटैक्स का काम नहीं कर रहा है। चक की टिप्पणी के लिए – Chuck

+0

+1 - स्पष्ट रूप से कुछ रक्षात्मक प्रोग्रामिंग ने मुझे PHP सीखने से बचने की अनुमति दी है जैसा कि मुझे करना चाहिए। (और शायद मुझे तीन दिवसीय सप्ताहांत के अंतिम दिन प्रश्नों का उत्तर देने की कोशिश नहीं करनी चाहिए ...) –

6

कारण यह स्पष्ट नहीं है कि आप जो चाहते हैं उसे कैसे करें explodefalse वापस कर सकता है। आपको इसमें अनुक्रमण से पहले रिटर्न वैल्यू की जांच करनी चाहिए।

+0

धन्यवाद। मुझे इस तरह व्यवहार करने वाले मूल्यों को वापस करने के लिए उपयोग नहीं किया जाता है और जब मैंने PHP मैनुअल की जांच की तो मुझे याद आया। –

+0

यह हमेशा मेरे लिए थोड़ा विचित्र लग रहा था, लेकिन यह उपयोगी है, और उदा। एन रिटर्न के लिए सी में मॉलोक को कॉल की जांच करनी है। –

+2

यह वास्तव में बस है कि PHP वाक्यविन्यास इसका समर्थन नहीं करता है। आप बस यह कह रहे हैं कि लोगों को उनके वापसी मूल्यों की जांच करने का तरीका है? – falstro

2

के बाद से विस्फोट() एक सरणी देता है, आप इस तरह के $username = current(explode('.',$thread_user));

1

मैं सिर्फ अपने ही समारोह का उपयोग के रूप में अन्य कार्यों का उपयोग कर सकते हैं:

function explodeAndReturnIndex($delimiter, $string, $index){ 
    $tempArray = explode($delimiter, $string); 
    return $tempArray[$index]; 
} 

अपने उदाहरण के लिए कोड तो होगा:

$username = explodeAndReturnIndex('.', $thread_user, 1); 
1

यहां इसे एक पंक्ति में कैसे प्राप्त करें:

$username = current(array_slice(explode('.',$thread_user), indx,1));

जहां indx वह अनुक्रमणिका है जो आप विस्फोटित सरणी से चाहते हैं। मैं php के लिए नया हूँ लेकिन मुझे विस्फोटक सरणी कहना पसंद है :)

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