Rögzít PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 

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

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.

Hogyan » WordPress » Rögzít PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 

Szenvedélyes a technológiával kapcsolatban, szeretek tesztelni és oktatóanyagokat írni az operációs rendszerekről macOS, Linux, Windows, ról ről WordPress, WooCommerce és LEMP webszerverek konfigurálása (Linux, NGINX, MySQL és PHP). írok tovább StealthSettingsA .com 2006 óta, és néhány évvel később elkezdtem írni az iHowTo.Tips oktatóanyagokat és az ökoszisztéma eszközeiről szóló híreket Apple: iPhone, iPad, Apple Nézd, HomePod, iMac, MacBook, AirPod-ok és kiegészítők.

Írj hozzászólást