修正する PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 

多くの場合に発生する PHP エラー WordPress Plugins 長い間更新されていないか、新しいバージョンの PHP と互換性がありません。 PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable.

このシナリオでは、モジュールで 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

エラーが発生する理由 PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable ?

このPHPエラーを生成する問題は関数です sizeof() PHP 7.2 以降のバージョンでは、指定されたパラメーターが XNUMX つでない場合、このエラーが生成される可能性があります。 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. 要素数が XNUMX または $crosssells が空の文字列の場合、false が返されます。

このチュートリアルに説明や追加がある場合は、コメントを残してください。

テクノロジーに情熱を持っており、喜んで記事を書いています StealthSettings2006 年から .com を運営しています。私はオペレーティング システムに関して豊富な経験を持っています。 macOS, Windows シ Linuxだけでなく、プログラミング言語やブログ プラットフォームでも使用できます (WordPress) およびオンライン ストアの場合 (WooCommerce、Magento、PrestaShop)。

» WordPress » 修正する PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 
コメント