PHP -advarsel: størrelse av

ved

0

Fix PHP -advarsel: størrelse av (): Parameter må være en matrise eller et objekt som implementerer tellbar

Fix PHP -advarsel: størrelse av (): Parameter må være en matrise eller et objekt som implementerer tellbar

0
PHP -advarsel: størrelse av

En PHP-feil som dukker opp i mange WordPress Plugins som ikke har blitt oppdatert på lenge eller er inkompatible med nyere versjoner av PHP. PHP Advarsel: sizeof(): Parameteren må være en matrise eller et objekt som implementerer Countable.

I vårt scenario oppsto PHP-feilen i en modul Cross Sell Product Display for 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 Advarsel: sizeof(): Parameteren må være en matrise eller et objekt som implementerer Countable ?

Problemet som genererer denne PHP-feilen er funksjonen sizeof() som i versjonen av PHP 7.2 eller nyere versjoner, kan generere denne feilen, hvis den gitte parameteren ikke er én array eller et objekt som implementerer grensesnittet Countable.

Derfor dukker feilen ofte opp etter en oppdatering av PHP-versjonen.

Hvordan løse PHP-feil generert av sizeof()?

Den enkleste metoden er å erstatte funksjonskallet sizeof() med et funksjonskall count().

Når det gjelder de som bruker gamle versjoner av modulen Cross Sell Product Display, løsningen er enkel. Funksjonene fra 18 tommers linjen vil bli erstattet 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;
	
}

Koden ovenfor der sizeof() er vil bli erstattet med:

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

Denne modifikasjonen sjekker først om $crosssells Det er en array ved å bruke funksjonen is_array() og ellers returnerer false.

I tilfelle det $crosssells Det er en array, brukes funksjonen count() for å bestemme antall elementer i array. Hvis antall elementer er null eller $crosssells er en tom streng, returneres false.

Legg igjen kommentarer hvis det er noen avklaringer eller tillegg til denne opplæringen.

Fix PHP -advarsel: størrelse av (): Parameter må være en matrise eller et objekt som implementerer tellbar

Du kan også være interessert i...

Legg igjen et svar

E-postadressen din vil ikke bli publisert. Nødvendige felt er merket *