2011-06-07 22 views
15

में वापसी का उपयोग करना है, लेकिन कोई त्रुटि प्राप्त:मैं एक त्रिगुट ऑपरेटर में वापसी उपयोग करने के लिए कोशिश कर रहा हूँ त्रिगुट ऑपरेटर php

Parse error: syntax error, unexpected T_RETURN 

कोड यह रहा:

$e = $this->return_errors(); 
(!$e) ? '' : return array('false', $e); 

यह संभव है?

धन्यवाद!

उत्तर

6

यह सबसे अधिक भाषाओं में काम नहीं करता क्योंकि return एक बयान (जैसे if, while, आदि) है, बल्कि एक ऑपरेटर है कि एक अभिव्यक्ति में नेस्ट किया जा सकता है की तुलना में। एक ही तर्क के बाद आप घोंसला करने के लिए एक अभिव्यक्ति के भीतर एक if बयान कोशिश नहीं:

// invalid because 'if' is a statement, cannot be nested, and yields no result 
func(if ($a) $b; else $c;); 

// valid because ?: is an operator that yields a result 
func($a ? $b : $c); 

यह रूप में अच्छी तरह break और continue के लिए काम नहीं करेंगे।

2

नहीं यह संभव नहीं है, और यह भी बहुत भ्रामक की तुलना में है:

return !$e ? '' : array('false', $e); 
20

यह सही सिंटैक्स है। निम्नलिखित, हालांकि, संभव है:

$e = $this->return_errors(); 
return (!$e) ? '' : array(false, $e); 

आशा है कि मदद करता है।

+8

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

+1

सही लेकिन यह इस तरह से काम नहीं करता है। कुछ हमेशा एक टर्नरी के साथ वापस आ जाएगा क्योंकि यह एक बयान है और इसे टर्नरी में घोंसला नहीं दिया जा सकता है। एक नए उपयोगकर्ता के रूप में – CommandZ

0

नहीं, यह संभव नहीं है:

if($e) { 
    return array('false', $e); 
} 
6

बंद करें। आप return condition?a:b

+0

+1। अपना कोड प्रारूपित करना न भूलें :) –

1

नंबर चाहते हैं लेकिन आप return कथन के लिए एक टर्नरी अभिव्यक्ति प्राप्त कर सकते हैं।

return (!$e) ? '' : array('false', $e); 

नोट: यह वांछित तर्क नहीं हो सकता। मैं इसे एक उदाहरण के रूप में प्रदान कर रहा हूं।