PHP hiba, ami sok esetben megjelenik WordPress Plugins amelyeket sokáig nem frissítettek vagy nem kompatibilisek a PHP újabb verzióival. PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable.
A mi forgatókönyvünk szerint a PHP hiba egy modulban történt Cross Sell Product Display a WooCommerce számára.
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
Tartalomjegyzék
Miért fordul elő a hiba PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable ?
A probléma, amely ezt a PHP hibát generálja, a függvény sizeof()
amely a PHP 7.2 vagy újabb verzióiban ezt a hibát generálhatja, ha a megadott paraméter nem az array vagy az interfészt megvalósító objektum Countable.
Ezért a hiba gyakran a PHP verzió frissítése után jelenik meg.
által generált PHP hibák megoldása sizeof()
?
A legegyszerűbb módszer a függvényhívás cseréje sizeof()
függvényhívással count()
.
A modul régi verzióit használók esetében Cross Sell Product Display, a megoldás egyszerű. A 18 hüvelykes vonal funkciói lecserélődnek 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;
}
A fenti kód, amelyben szerepel sizeof() helyébe a következő lép:
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;
}
Ez a módosítás először ellenőrzi, ha $crosssells
egy array funkció használatával is_array()
és egyébként visszatér false.
Esetében $crosssells
egy array, a funkció használatban van count()
az elemek számának meghatározásához array. Ha az elemek száma nulla ill $crosssells
egy üres karakterlánc, hamis értéket ad vissza.
Hagyjon megjegyzéseket, ha bármilyen pontosítás vagy kiegészítés van ehhez az oktatóanyaghoz.