PHP brīdinājums: izmērs

pie

0

Fix PHP BRĪDINĀJUMS: Izmērs (): parametram jābūt masīvam vai objektam, kas īsteno skaitāmu

Fix PHP BRĪDINĀJUMS: Izmērs (): parametram jābūt masīvam vai objektam, kas īsteno skaitāmu

0
PHP brīdinājums: izmērs

PHP kļūda, kas parādās daudzos WordPress Plugins kas nav tikuši atjaunināti ilgu laiku vai nav saderīgi ar jaunākām PHP versijām. PHP brīdinājums: sizeof(): parametram ir jābūt masīvam vai objektam, kas ievieš Countable.

Mūsu scenārijā PHP kļūda radās modulī Cross Sell Product Display par 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

Dece apare eroarea PHP Brīdinājums: sizeof(): Parametram ir jābūt masīvam vai objektam, kas ievieš Countable?

Problēma, kas rada šo PHP kļūdu, ir funkcija sizeof() kas PHP 7.2 vai jaunākās versijās var ģenerēt šo kļūdu, ja norādītais parametrs nav viens array vai objekts, kas ievieš saskarni CountableApvidū

Tāpēc kļūda bieži parādās pēc PHP versijas atjaunināšanas.

Kā atrisināt PHP kļūdas, ko rada sizeof()?

Vienkāršākā metode ir aizstāt funkcijas izsaukumu sizeof() ar funkciju izsaukumu count()Apvidū

Tiem, kas izmanto vecās moduļa versijas Cross Sell Product Display, risinājums ir vienkāršs. Funkcijas no 18 collu līnijas tiks aizstātas templates.phpApvidū

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

Iepriekš esošais kods, kurā ir sizeof(), tiks aizstāts ar:

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

Šī modifikācija vispirms pārbauda, ​​vai $crosssells Tas ir a array izmantojot funkciju is_array() un pretējā gadījumā atgriežas falseApvidū

Gadījumā, ja $crosssells Tas ir a array, funkcija tiek izmantota count() lai noteiktu elementu skaitu array. Ja elementu skaits ir nulle vai $crosssells ir tukša virkne, tiek atgriezta false.

Atstājiet komentārus, ja šajā apmācībā ir kādi precizējumi vai papildinājumi.

Fix PHP BRĪDINĀJUMS: Izmērs (): parametram jābūt masīvam vai objektam, kas īsteno skaitāmu

Iespējams, jūs interesē arī...

Atstājiet atbildi

Jūsu e-pasta adrese netiks publicēta. Nepieciešamie lauki ir marķēti *