PHP警告を修正:sizeof():パラメーターは、可算を実装する配列またはオブジェクトである必要があります

多くの人に表示されるPHPエラー WordPress Plugins 長い間更新されていないか、PHPの新しいバージョンと互換性がありません。 PHP警告:sizeof():パラメーターは、可算を実装する配列またはオブジェクトでなければなりません。

私たちのシナリオでは、PHPエラーがモジュールに表示されました Cross Sell Product Display 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 ar?

このPHPエラーを生成する問題は関数です sizeof() PHP 7.2または後続のバージョンのバージョンでは、指定されたパラメーターがそうでない場合、このエラーを生成できます。 array または、インターフェイスを実装するオブジェクト Countable

したがって、多くの場合、エラーはPHPバージョンの更新後に表示されます。

生成されたPHPエラーをどのように解決しますか sizeof()

最も簡単な方法は、関数への呼び出しを置き換えることです sizeof() 関数への呼び出しで count()

モジュールの古いバージョンを使用する人の場合 Cross Sell Product Display、ソリューションは簡単です。 18行目からの関数が交換されます 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;
	
}

sizeof()が置き換える上記のコード:

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

この変更は、最初にチェックします $crosssells それはです array 関数を使用します is_array() それ以外の場合は戻ります false

もし $crosssells それはです array、機能が使用されます count() のアイテムの数を決定します array。アイテムの数がゼロまたは $crosssells それは真空文字列であり、falseを返します。

このチュートリアルに明確化や完了が行われる場合は、コメントを残してください。

テクノロジーに情熱を注いで、私は2006年からStealthsetts.comに喜びをもって書いています。私はオペレーティングシステムなどの豊富な経験を持っています:Macos、Windows、Linuxだけでなく、プログラミング言語やブログプラットフォーム(WordPress)、およびオンラインストア(WooCommerce、Magento、Presashop)。

あなたのソースのチュートリアル、便利なヒント、ニュース。 PHP警告を修正:sizeof():パラメーターは、可算を実装する配列またはオブジェクトである必要があります
コメントを残してください