Düzeltme PHP Uyarısı: sizeof (): Parametre bir dizi veya sayılabilir bir nesne olmalıdır

Birçoğunda görünen bir PHP hatası WordPress Plugins uzun zamandır güncellenmemiş veya PHP'nin daha yeni sürümleriyle uyumsuz olan. PHP UYARI: sizeof (): Parametre bir dizi veya sayılabilir bir nesne olmalıdır.

Senaryomuzda, PHP hatası bir modülde göründü Cross Sell Product Display WooCommerce için.

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 UYARI: sizeof (): Parametre bir dizi mi yoksa sayılabilir mi?

Bu PHP hatasını oluşturan sorun işlevdir sizeof() PHP 7.2 veya sonraki sürümlerin sürümünde, verilen parametre 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 görünür.

Tarafından oluşturulan PHP hatalarını nasıl çözersiniz? sizeof()?

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

Modülün eski sürümlerini kullananlar için Cross Sell Product Display, çözüm basit. 18. satırdaki 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;
	
}

Somutof () 'nın değiştirileceği yukarıdaki kod aşağıdakilerle 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 $crosssells Bu bir array işlevi kullanmak is_array() ve aksi halde döner false.

Eğer $crosssells Bu bir array, işlev kullanılır count() İçindeki öğe sayısını belirlemek için array. Öğe sayısı sıfırsa veya $crosssells Bir vakum dizesidir, yanlış döndürür.

Bu öğreticiye açıklamalar veya tamamlamalar yapılacaksa yorum bırakın.

Teknoloji konusunda tutkulu, 2006'dan başlayarak StealthSetts.com'da zevkle yazıyorum. İşletim sistemlerinde zengin bir deneyime sahibim: macOS, Windows ve Linux, aynı zamanda programlama dilleri ve bloglama platformlarında (WordPress) ve çevrimiçi mağazalar için (WooCommerce, Magento, Presashop).

Ev BT öğreticileri, faydalı ipuçları ve haberler. Düzeltme PHP Uyarısı: sizeof (): Parametre bir dizi veya sayılabilir bir nesne olmalıdır
Yorum bırak