Fix PHP -waarschuwing: sizeof (): parameter moet een array of een object zijn dat telbaar implementeert
Fix PHP -waarschuwing: sizeof (): parameter moet een array of een object zijn dat telbaar implementeert
O eroare PHP care apare in multe WordPress Plugins ce nu au mai fost actualizate de mult timp sau sunt incompatibile cu versiunile mai noi de PHP. PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable.
inhoud
In scenariul nostru, eroarea PHP a aparut la un modulul Cross Sell Product Display pentru 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
De ce apare eroarea PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable ?
Problema care genereaza aceasta eroare PHP, este functia sizeof() care in versiunea de PHP 7.2 sau versiuni ulterioare, poate genera aceasta eroare, daca parametrul dat nu este un array sau un obiect care implementeaza interfata Countable.
Asadar, eroarea apare de multe ori dupa o actualizare a versiunii PHP.
Hoe PHP-fouten op te lossen die worden gegenereerd door sizeof()?
De eenvoudigste methode is om de functieaanroep te vervangen sizeof() met een functieaanroep count().
In het geval van degenen die oude versies van de module gebruiken Cross Sell Product Display, de oplossing is eenvoudig. De functies uit de 18 inch lijn worden vervangen 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;
}
De bovenstaande code waar sizeof() is, wordt vervangen door:
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;
}
Deze wijziging controleert eerst of $crosssells Het is een array met behulp van de functie is_array() en anders terugkomt false.
- [Fix PHP 7.2 / PHP 7.3] PHP-waarschuwing: gebruik van een ongedefinieerde constante (dit zal een fout opleveren in een toekomstige versie van PHP)
- Hoe enorme WP_OPTIONS te reinigen in SQL - Transiënten, WPSEO_SITEMAP _CACHE_VALIDATOR
- Fix wc-ajax = get_refreshed_fragments Hoog CPU-gebruik (schakel AJAX winkelwagenfragmenten uit)
- Hoe u de pagina 'Er zijn geen producten gevonden die overeenkomen met uw selectie' in WooCommerce - Verkoop in online winkels optimaliseert, aanpast
- Hoe enorme WP_OPTIONS te reinigen in SQL - Transiënten, WPSEO_SITEMAP _CACHE_VALIDATOR
In het geval dat $crosssells Het is een array, wordt de functie gebruikt count() om het aantal elementen in te bepalen array. Als het aantal elementen nul is of $crosssells is een lege tekenreeks, false wordt geretourneerd.
Laat opmerkingen achter als er verduidelijkingen of aanvullingen zijn op deze tutorial.
Fix PHP -waarschuwing: sizeof (): parameter moet een array of een object zijn dat telbaar implementeert
Wat is nieuw
Over Stealth
Gepassioneerd door technologie schrijf ik met plezier op StealthSettings.com sinds 2006. Ik heb veel ervaring met besturingssystemen: macOS, Windows en Linux, maar ook met programmeertalen en bloggingplatforms (WordPress) en voor webshops (WooCommerce, Magento, PrestaShop).
Bekijk alle berichten van StealthMogelijk bent u ook geïnteresseerd in...