PHP -waarschuwing: sizeof

door

0

Fix PHP -waarschuwing: sizeof (): parameter moet een array of een object zijn dat telbaar implementeert

Fix PHP -waarschuwing: sizeof (): parameter moet een array of een object zijn dat telbaar implementeert

0
PHP -waarschuwing: sizeof

O eroare PHP care apare in multe WordPress Plugins ce nu au mai fost actualizate de mult timp sau sunt incompatibile cu versiunile mai noi de PHP. PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable.

In scenariul nostru, eroarea PHP a aparut la un modulul Cross Sell Product Display pentru 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 Warning: sizeof(): Parameter must be an array or an object that implements Countable ?

Problema care genereaza aceasta eroare PHP, este functia sizeof() care in versiunea de PHP 7.2 sau versiuni ulterioare, poate genera aceasta eroare, daca parametrul dat nu este un array sau un obiect care implementeaza interfata Countable.

Asadar, eroarea apare de multe ori dupa o actualizare a versiunii PHP.

Hoe PHP-fouten op te lossen die worden gegenereerd door sizeof()?

De eenvoudigste methode is om de functieaanroep te vervangen sizeof() met een functieaanroep count().

In het geval van degenen die oude versies van de module gebruiken Cross Sell Product Display, de oplossing is eenvoudig. De functies uit de 18 inch lijn worden vervangen 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;
	
}

De bovenstaande code waar sizeof() is, wordt vervangen door:

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;
	
}

Deze wijziging controleert eerst of $crosssells Het is een array met behulp van de functie is_array() en anders terugkomt false.

In het geval dat $crosssells Het is een array, wordt de functie gebruikt count() om het aantal elementen in te bepalen array. Als het aantal elementen nul is of $crosssells is een lege tekenreeks, false wordt geretourneerd.

Laat opmerkingen achter als er verduidelijkingen of aanvullingen zijn op deze tutorial.

Fix PHP -waarschuwing: sizeof (): parameter moet een array of een object zijn dat telbaar implementeert

Mogelijk bent u ook geïnteresseerd in...

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd *