2011-11-28 8 views
8

क्या कोई तरीका है कि मैं अपना PHP फ़ंक्शन एक अलग मान प्रकार वापस कर सकता हूं? निम्नलिखित कोड की व्याख्या करनी चाहिए कि मैं क्या मतलब है:क्या फ़ंक्शन में PHP में एकाधिक रिटर्न वैल्यू प्रकार हो सकते हैं?

<?php 
public function test($value){ 
    if($value == 1){ 
     return "SUCCESS"; 
    } else { 
     return false; 
    } 
} 
?> 

पर एक शर्त मैं एक स्ट्रिंग लौट रहा हूँ, नहीं तो मैं एक बूलियन लौट रहा हूँ। क्या यह अनुमति/संभव है?

+0

आप इसे की कोशिश की? – JJJ

+4

यदि आप अच्छे प्रथाओं की परवाह करते हैं तो यह संभव नहीं है :) – Esailija

+1

सिर्फ इसलिए कि आप * का मतलब नहीं कर सकते * आपको * चाहिए। – thetaiko

उत्तर

14

हां। PHP को ढीला टाइप किया गया है, इसलिए कोई भी चर किसी भी प्रकार का ले सकता है। फंक्शन रिटर्न वैल्यू कोई अपवाद नहीं है।

+1

और यह जोड़ने के लिए सार्थक * * * * देशी php फ़ंक्शन ऐसा करते हैं। वास्तव में, मैनुअल इसे "मिश्रित" रिटर्न प्रकार कहते हैं। – goat

+1

@chris और यहां तक ​​कि अगर रिटर्न प्रकार मिश्रित नहीं होता है, तो फ़ंक्शन सामान्य रूप से निर्दिष्ट रिटर्न प्रकार या झूठी/शून्य देता है। तो हाँ, काफी आम :) – NikiC

+0

PHP 7 में संभव नहीं है सख्त मोड सक्षम – PiKey

-3

क्या यह अनुमति/संभव है?

हाँ।

0

हाँ, thats, सी, जावा, ..., जहाँ आप वापसी को परिभाषित करने के लिए है ..

0

यह अनुमति दी है की तरह नहीं की अनुमति दी। हालांकि, आपके द्वारा दिए गए मामले में यह सलाह नहीं दी जाती है। एक उदाहरण के लिए जहां यह समझ में आता है, उदाहरण पर एक नज़र डालें strpos() फ़ंक्शन।

3

हां, यह संभव है (लेकिन सलाह नहीं दी जा सकती है)।

आपको कम से कम यह आपके जावाडोक टिप्पणी में घोषित करना चाहिए

/** 
* @param int $value 
* @return mixed string|boolean 
**/ 
public function test($value){ 
    if($value == 1){ 
     return "SUCCESS"; 
    } else { 
     return false; 
    } 
} 

भी पीएचपी के कार्यों में बनाया करते हैं यह कभी कभी (जैसे mysql_connect => बूलियन | संसाधन लिंक)

0

मैं अपने आप को इस के बारे में चिंता है, क्यों कुछ अलग है जो अलग है? तो प्राप्त करने के अंत में दो चीजें जांचने के लिए मिलता है? मुझे लगता है कि मैंने टाइप या एक सरणी के खाली संस्करण को एक स्टेटस तत्व के साथ वापस करने पर बसने का फैसला किया है।

दो उदाहरणों में शामिल कैसे चीजें एक समारोह/विधि के भीतर बदल सकते हैं, और आप मूल रूप से उम्मीद से अधिक जांच करने के लिए मजबूर किया जाता है:

<?php 
function test($value){ 
if($value == 1){ 
    $local = successFunction($value); 
    return $local; 
} else { 
    return false; 
} 
} 

$res = test(1); 
if ($res) { 
    echo "We are OK ? Right? No? What is this?"; 
} 

संस्करण 2

function test($value){ 
if($value == 1){ 
    $local = successFunction($value); 
    return $local; 
} else { 
    return ""; 
} 
} 

$res = test(1); 
    if (!empty($res)) { 
     echo "more likely we are ok"; 
    } 
?> 
संबंधित मुद्दे