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 mert 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

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.

Technológiai rajongóként örömmel írok a StealthSettings.com-on 2006 óta. Széles körű tapasztalatom van operációs rendszerekkel: macOS, Windows és Linux, valamint programozási nyelvekkel és blogolási platformokkal (WordPress) és online áruház platformokkal (WooCommerce, Magento, PrestaShop).

Hogyan » WordPress » Rögzít PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 
Írj hozzászólást