एक 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
कपि ins
त्रुटि क्यों होती है 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
एक खाली स्ट्रिंग है, झूठा लौटाया जाता है।
इस ट्यूटोरियल में कोई स्पष्टीकरण या परिवर्धन होने पर टिप्पणियाँ छोड़ें।