2012-08-11 11 views
14

मेरे पास एक ऐसा फ़ंक्शन है जो एक सरणी देता है। मैं एक समारोह है कि सिर्फ पहली पंक्ति रिटर्न है, लेकिन किसी कारण से, यह मुझे एक मध्यवर्ती चर का उपयोग करता है, यानी यह विफल रहता है:PHP ऐरे सिंटेक्स पार्स त्रुटि बाएं स्क्वायर ब्रैकेट "["

function f1(/*some args*/) { 
    return /*an array*/; 
} 
function f2(/*some args*/) { 
    return f1(/*some args*/)[0]; 
} 

। । । साथ:

Parse error: syntax error, unexpected '[' in util.php on line 10

लेकिन, इस काम करता है:

function f1(/*some args*/) { 
    return /*an array*/; 
} 
function f2(/*some args*/) { 
    $temp = f1(/*some args*/); 
    return $temp[0]; 
} 

मैं कुछ भी प्रासंगिक ऑनलाइन खोजने के लिए सक्षम नहीं था (अपनी खोजों के साथ लोगों से उलझन में हो रही रखा, "{", "<"? " ", आदि।)।

मैं PHP में स्वयं सिखाया जाता हूं - क्या कोई कारण है कि मैं इसे सीधे नहीं कर सकता हूं कि मुझे याद आया है?

+1

की [यह PHP में एक गुमनाम सरणी के किसी विशिष्ट तत्व के संदर्भ के लिए संभव है?] संभव डुप्लिकेट (http से चिपक है : //stackoverflow.com/questions/8276224/is-it-possible-to-reference-a- विशिष्ट-element-of-an-anonymous-array-in-php) – DCoder

+1

संभावित डुप्लिकेट [एक्सेस PHP एरे तत्व के साथ फ़ंक्शन?] (http://stackoverflow.com/questions/396519/access-php-array-element-with-a- कार्यक्षमता) –

+0

भाषा क्या करती है इसे 5.4.0 –

उत्तर

25

आप समारोह सरणी

return f1(/*some args*/)[0]; 
PHP 5.4.0 और ऊपर तक

अपसंदर्भन उपयोग नहीं कर सकते।

+0

रॉस इसे पहले मिला। धन्यवाद, – imallett

+1

इस के लिए उचित अवधि को प्रकट करने के लिए प्रोप, यह एक साधारण प्रश्न के लिए एक लंबी खोज समाप्त हो गई। –

2

इस व्यवहार का कारण यह है कि PHP कार्यों को जावास्क्रिप्ट कार्यों की तरह जंजीर नहीं बनाया जा सकता है। document.getElementsByTagNames('a')[0] की तरह ही संभव है।

आप PHP संस्करण के लिए दूसरा दृष्टिकोण < 5,4

Function array dereferencing has been added, e.g. foo()[0].

http://php.net/manual/en/migration54.new-features.php