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

Ein PHP-Fehler, der in vielen auftritt WordPress Plugins die seit langem nicht mehr aktualisiert wurden oder mit neueren PHP-Versionen nicht kompatibel sind. PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable.

In unserem Szenario ist der PHP-Fehler in einem Modul aufgetreten Cross Sell Product Display für 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

Warum der Fehler auftritt PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable ?

Das Problem, das diesen PHP-Fehler generiert, ist die Funktion sizeof() was in der Version von PHP 7.2 oder späteren Versionen diesen Fehler erzeugen kann, wenn der angegebene Parameter keiner ist array oder ein Objekt, das die Schnittstelle implementiert Countable.

Daher tritt der Fehler häufig nach einem Update der PHP-Version auf.

So lösen Sie PHP Error, die von generiert wurden sizeof()?

Die einfachste Methode besteht darin, den Funktionsaufruf zu ersetzen sizeof() mit einem Funktionsaufruf count().

Für diejenigen, die alte Versionen des Moduls verwenden Cross Sell Product Display, die Lösung ist einfach. Die Funktionen der 18 Zoll Reihe werden ersetzt 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;
	
}

Der obige Code, in dem es ist sizeof() wird ersetzt durch:

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

Diese Modifikation prüft zuerst, ob $crosssells ein array mit der Funktion is_array() und kehrt ansonsten zurück false.

Im Falle von $crosssells ein array, die Funktion wird verwendet count() um die Anzahl der Elemente zu bestimmen array. Wenn die Anzahl der Elemente Null ist oder $crosssells ein leerer String ist, wird false zurückgegeben.

Hinterlassen Sie Kommentare, wenn es Erläuterungen oder Ergänzungen zu diesem Tutorial gibt.

Technikbegeistert, schreibe ich seit 2006 gerne auf StealthSettings.com. Ich habe reichhaltige Erfahrung in Betriebssystemen: macOS, Windows und Linux, sowie in Programmiersprachen und Blogging-Plattformen (WordPress) und für Online-Shops (WooCommerce, Magento, PrestaShop).

So erreichen » WordPress » Fix PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 
Hinterlasse einen Kommentar