फिक्स PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 

एक PHP त्रुटि जो कई में प्रकट होती है WordPress Plugins जो लंबे समय से अपडेट नहीं किए गए हैं या PHP के नए संस्करणों के साथ असंगत हैं। PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable.

हमारे परिदृश्य में, मॉड्यूल में PHP त्रुटि हुई Cross Sell Product Display के लिए WooCommerce.

FastCGI sent in stderr: "PHP message: PHP Warning:  sizeof(): Parameter must be an array or an object that implements Countable in /web/path/public_html/wp-content/plugins/cross-sell-product-display-for-woocommerce/templates.php on line 18

त्रुटि क्यों होती है PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable ?

इस PHP त्रुटि को उत्पन्न करने वाली समस्या फ़ंक्शन है sizeof() जो PHP 7.2 या बाद के संस्करणों में, यह त्रुटि उत्पन्न कर सकता है, यदि दिया गया पैरामीटर एक नहीं है array या एक वस्तु जो इंटरफ़ेस को लागू करती है Countable.

इसलिए, त्रुटि अक्सर PHP संस्करण के अद्यतन के बाद प्रकट होती है।

द्वारा उत्पन्न PHP त्रुटियों को कैसे हल करें sizeof()?

फ़ंक्शन कॉल को प्रतिस्थापित करना सबसे आसान तरीका है sizeof() एक समारोह कॉल के साथ count().

मॉड्यूल के पुराने संस्करणों का उपयोग करने वालों के मामले में Cross Sell Product Displayसमाधान सरल है। 18 इंच लाइन के कार्यों को प्रतिस्थापित किया जाएगा templates.php.

function cdxfreewoocross_get_cross_sell_products($product_id=false){
	
	if($product_id ===false ){
		
		if(!is_product()){return false;}
		
		$product_id = (int)get_the_ID();
		if($product_id=='0'){return false;}
		
	}
	
	$crosssells = get_post_meta( $product_id, '_crosssell_ids',true);
	if ( sizeof($crosssells ) == 0  || $crosssells =='') { return false; }
	
	return $crosssells;
	
}

उपरोक्त कोड जिसमें यह है sizeof() द्वारा प्रतिस्थापित किया जाएगा:

function cdxfreewoocross_get_cross_sell_products($product_id=false){
	
	if($product_id ===false ){
		
		if(!is_product()){return false;}
		
		$product_id = (int)get_the_ID();
		if($product_id=='0'){return false;}
		
	}
	
	$crosssells = get_post_meta( $product_id, '_crosssell_ids',true);
	if ( !is_array( $crosssells ) || count( $crosssells ) == 0  || $crosssells =='') { return false; }
	
	return $crosssells;
	
}

यह संशोधन पहले जांचता है कि क्या $crosssells एक है array समारोह का उपयोग करना is_array() और, अन्यथा, वापस आ जाता है false.

के मामले में $crosssells एक है array, फ़ंक्शन का उपयोग किया जाता है count() में तत्वों की संख्या निर्धारित करने के लिए array. यदि तत्वों की संख्या शून्य है या $crosssells एक खाली स्ट्रिंग है, झूठा लौटाया जाता है।

इस ट्यूटोरियल में कोई स्पष्टीकरण या परिवर्धन होने पर टिप्पणियाँ छोड़ें।

प्रौद्योगिकी के प्रति जुनूनी होने के कारण मैं इस पर मजे से लिखता हूं StealthSettings2006 से .com। मुझे ऑपरेटिंग सिस्टम में व्यापक अनुभव है: macOS, Windows एसआई Linux, लेकिन प्रोग्रामिंग भाषाओं और ब्लॉगिंग प्लेटफ़ॉर्म में भी (WordPress) और ऑनलाइन स्टोर के लिए (WooCommerce, मैगेंटो, प्रेस्टाशॉप)।

कैसे करें » WordPress » फिक्स PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 
एक टिप्पणी छोड़ दो