2010-08-10 8 views
13

क्या किसी ऑब्जेक्ट में कोई फ़ील्ड है या नहीं, यह जांचने का कोई तरीका है? उदाहरण के लिए, मेरे पास एक साबुन सर्वर है जो मैं एक साबुन क्लाइंट का उपयोग कर पूछताछ कर रहा हूं और यदि मैं एक विधि प्राप्त करता हूं, तो मुझे या तो एक ऑब्जेक्ट लौटाया जाता है जिसमें साबुन क्वेरी को परिभाषित करने वाले फ़ील्ड होते हैं अन्यथा मैं ऑब्जेक्ट (stdClass) # 3 (0) {}।PHP ऑब्जेक्ट जारीकर्ता और/या खाली

क्या यह बताने का कोई तरीका है कि ऑब्जेक्ट में कुछ है या नहीं?

public function get($id){ 
    try{ 
     $client = new soapclient($this->WSDL,self::getAuthorization()); 
     $result = $client->__soapCall('get', array('get'=> array('sys_id'=>$id))); 
     if(empty($result)){$result = false; } 

    }catch(SoapFault $exception){ 
     //echo $exception;  
     $result = false; 
    } 
    return $result; 
}//end get() 

इस विधि या तो एक वस्तु या गलत लौटना चाहिए और मैं केवल कोई फ़ील्ड या क्षेत्रों के साथ एक वस्तु के साथ एक वस्तु प्राप्त कर रहा।

उत्तर

20

वर्तमान व्यवहार को प्रतिबिंबित करने के लिए अद्यतन, 5/30/12

खाली() इस के लिए काम करता था, लेकिन खाली के व्यवहार() कई बार बदल गया है। हमेशा की तरह, php दस्तावेज़ हमेशा सटीक व्यवहार के लिए सबसे अच्छा स्रोत होते हैं और उन पृष्ठों पर टिप्पणियां आमतौर पर समय के साथ परिवर्तनों का एक अच्छा इतिहास प्रदान करती हैं। आप वस्तु गुण की कमी के लिए जाँच करना चाहते हैं, इस समय एक बहुत ही बचाव की मुद्रा में विधि है:

if (is_object($theObject) && (count(get_object_vars($theObject)) > 0)) { 
    ... 
+0

यही काम कर देता है। – Chris

+0

मेरे लिए, यह एक त्रुटि देता है: "PHP घातक त्रुटि: लेखन संदर्भ में फ़ंक्शन रिटर्न मान का उपयोग नहीं कर सकता"। AFAIK, खाली() फ़ंक्शन के रिटर्न वैल्यू पर केवल वैरिएबल पर नहीं उपयोग किया जा सकता है। क्या मैं कुछ भूल रहा हूँ? –

+1

@MW - केवल कुछ ही वर्षों में। यह जवाब स्टैक ओवरफ्लो धूल से पीड़ित है, जहां प्रौद्योगिकी के बारे में उत्तर समय के साथ अमान्य हो सकता है। मैंने इसे अधिक प्रासंगिक होने के लिए अपडेट किया है, टिप्पणी के लिए धन्यवाद! –

-3

उपयोगकर्ता से एक php पर कोड का योगदान दिया जो मैं पतों लगता है कि अगर जाँच की आपकी समस्या को खाली() पेज सरणी भर जाती है लेकिन खाली मूल्य हैं। एक सरणी लेकिन खाली (स्ट्रिंग) कुछ भी नहीं है अगर

http://www.php.net/manual/en/function.empty.php#97772 लगाने के लिए मान:

<?php 
$foo = array('foo'=>'', 'bar'=>''); 
$bar = implode('', $foo); 

if (empty($bar)) { 
    echo "EMPTY!"; 
} else { 
    echo "NOT EMPTY!"; 
} 
?> 
संबंधित मुद्दे