Korjaa PHP -varoitus: sizeof (): Parametrin on oltava taulukko tai objekti, joka toteuttaa laskettavissa
Korjaa PHP -varoitus: sizeof (): Parametrin on oltava taulukko tai objekti, joka toteuttaa laskettavissa
PHP -virhe, joka näkyy monissa WordPress Plugins joita ei ole päivitetty pitkään tai ovat yhteensopimattomia PHP: n uudempien versioiden kanssa. PHP -varoitus: sizeof (): Parametrin on oltava taulukko tai objekti, joka toteuttaa laskettavissa.
sisältö
Skenaariossamme PHP -virhe ilmestyi moduuliin 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
De ce apare eroarea php varoitus: sizeof (): parametrin on oltava taulukko tai esine, joka toteuttaa laskettavissa?
Tämän PHP -virheen aiheuttama ongelma on toiminto sizeof() joka PHP 7.2: n tai sitä seuraavien versioiden versiossa voi luoda tämän virheen, jos annettu parametri ei ole a array tai objekti, joka toteuttaa käyttöliittymän Countable.
Siksi virhe ilmestyy usein PHP -version päivityksen jälkeen.
Kuinka ratkaiset PHP -virheet sizeof()?
Yksinkertaisin tapa on korvata puhelu toimintoon sizeof() puhelu toimintoon count().
Niissä, jotka käyttävät moduulin vanhoja versioita Cross Sell Product Display, ratkaisu on yksinkertainen. Rivi 18: n toiminnot korvataan 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;
}
Yllä oleva koodi, jossa koko () korvataan:
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;
}
Tämä muutos tarkistaa ensin $crosssells Se on a array toiminnon käyttäminen is_array() ja muuten palaa false.
- [Korjaa PHP 7.2 / PHP 7.3] PHP -varoitus: Määrittelemättömän vakion käyttö (tämä heittää virheen PHP: n tulevassa versiossa)
- Kuinka puhdistaa valtavat WP_Options in SQL - Transientit, WPSEO_SITEMAP _CACHE_VALIDATOR
- Korjaa wc-ajax = get_refreshed_fragments korkea CPU
- Kuinka mukauttaa sivua "Tuotteita ei löydy valintasi sovittaessa" WooCommerce -ohjelmassa - myynnin optimointi verkkokaupoissa
- Kuinka puhdistaa valtavat WP_Options in SQL - Transientit, WPSEO_SITEMAP _CACHE_VALIDATOR
Jos $crosssells Se on a array, funktiota käytetään count() kohteiden lukumäärän määrittäminen array. Jos kohteiden lukumäärä on nolla tai $crosssells Se on tyhjiömerkkijono, se palauttaa väärän.
Jätä kommentit, jos tähän opetusohjelmaan tehdään selvennyksiä tai loppuun saattamista.
Korjaa PHP -varoitus: sizeof (): Parametrin on oltava taulukko tai objekti, joka toteuttaa laskettavissa
Mitä uutta
Noin Stealth
Teknologiasta intohimoinen, kirjoitan mielelläni StealthSettings.com-sivustolla vuodesta 2006 lähtien. Minulla on laaja kokemus käyttöjärjestelmistä: macOS, Windows ja Linux, sekä ohjelmointikielistä ja blogialustoista (WordPress) sekä verkkokaupoista (WooCommerce, Magento, PrestaShop).
Näytä kaikki Stealthin viestitSaatat olla kiinnostunut myös...