sabit PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 

Pek çok yerde görünen bir PHP hatası WordPress Plugins uzun süredir güncellenmemiş veya PHP'nin daha yeni sürümleriyle uyumsuz olan. PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable.

Senaryomuzda PHP hatası bir modülde oluştu. Cross Sell Product Display için 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

Hata neden oluşur? PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable ?

Bu PHP hatasını oluşturan sorun, işlevdir. sizeof() PHP 7.2 veya sonraki sürümlerde, verilen parametre bir değilse bu hatayı oluşturabilir. array veya arayüzü uygulayan bir nesne Countable.

Bu nedenle, hata genellikle PHP sürümünün güncellenmesinden sonra ortaya çıkar.

Tarafından oluşturulan PHP hataları nasıl çözülür? sizeof()?

En basit yöntem, işlev çağrısını değiştirmektir. sizeof() işlev çağrısı ile count().

Modülün eski sürümlerini kullananlar durumunda Cross Sell Product Display, çözüm basit. 18 inçlik hattaki işlevler değiştirilecek 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;
	
}

İçinde bulunduğu yukarıdaki kod sizeof() ile değiştirilecektir:

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

Bu değişiklik ilk olarak şunları kontrol eder: $crosssells bir array işlevi kullanma is_array() ve aksi takdirde iadeler false.

durumunda $crosssells bir array, işlev kullanılır count() eleman sayısını belirlemek için array. Eleman sayısı sıfırsa veya $crosssells boş bir dizedir, false döndürülür.

Bu eğitimde herhangi bir açıklama veya ekleme varsa yorum bırakın.

Teknolojiye tutkulu, 2006 yılından beri StealthSettings.com'da yazıyorum. macOS, Windows ve Linux işletim sistemlerinde geniş deneyimim var, aynı zamanda programlama dilleri ve blog platformları (WordPress) ile online mağazalar için (WooCommerce, Magento, PrestaShop) bilgi sahibiyim.

nasıl » WordPress » sabit PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 
Leave a Comment