多くの人に表示される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を返します。
このチュートリアルに明確化や完了が行われる場合は、コメントを残してください。