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.

Szenvedélyes a technológia, szívesen írok róla StealthSettings.com 2006 óta. Az operációs rendszerekről általam írt cikkeket talál Windows, Linux, macOS, hanem olyan webes platformokról is, mint pl WordPress şi WooCommerce

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

Írj hozzászólást

Best tutorials in your language:
EN - DE - DA - FR - ES - IT - PT - NL - NO - FI - SV - PL - HR - SL - CS - SK - TR - EL - LV - ET - LT - BG - UK - RU - HU - ID - VI - HI - JA - KO - TH - ZH-CN - ZH-TW - IW - AR