Popravite upozorenje PHP -a: sizeOf (): Parametar mora biti niz ili objekt koji provodi brojanje brojača

PHP pogreška koja se pojavljuje u mnogim WordPress Plugins koji nisu dugo ažurirani ili su nespojivi s novijim verzijama PHP -a. PHP Upozorenje: sizeOf (): Parametar mora biti niz ili objekt koji implementira brojač.

U našem scenariju, PHP se pojavila na modulu Cross Sell Product Display Za 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 upozorenje: sizeof (): parametar mora biti niz ili objekt koji implementira brojač?

Problem koji generira ovu PHP pogrešku je funkcija sizeof() koja u verziji PHP 7.2 ili sljedeće verzije može generirati ovu pogrešku, ako dani parametar nije a array ili objekt koji implementira sučelje Countable.

Stoga se pogreška često pojavljuje nakon ažuriranja PHP verzije.

Kako riješiti PHP pogreške koje su generirali sizeof()?

Najjednostavnija metoda je zamijeniti poziv na funkciju sizeof() s pozivom na funkciju count().

U slučaju onih koji koriste stare verzije modula Cross Sell Product Display, Rješenje je jednostavno. Funkcije iz linije 18 bit će zamijenjene 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;
	
}

Gornji kôd u kojem će veličinuOf () biti zamijenjen:

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

Ovo mijenja prvo provjerava je li $crosssells To je a array Korištenje funkcije is_array() i inače se vraća false.

Ako $crosssells To je a array, koristi se funkcija count() za određivanje broja predmeta u array. Ako je broj predmeta nula ili $crosssells To je vakuumski niz, vraća lažno.

Ostavite komentare ako se u ovom vodiču trebaju pojašnjenja ili završetka.

Strastveni u vezi s tehnologijom, pišem sa zadovoljstvom na Stealthsetts.com počevši od 2006. godine. Imam bogato iskustvo u operativnim sustavima: macOS, Windows i Linux, ali i na programskim jezicima i platformama za bloganje (WordPress) i za internetske trgovine (WooCommerce, Magento, Presashop).

Dom Vaš izvor IT vodiča, korisni savjeti i vijesti. Popravite upozorenje PHP -a: sizeOf (): Parametar mora biti niz ili objekt koji provodi brojanje brojača
Ostavite komentar