إصلاح تحذير 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 تحذير: sizeof (): يجب أن تكون المعلمة صفيفًا أو كائنًا ينفذ قابلاً للعد؟

المشكلة التي تولد خطأ 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 إنها سلسلة فراغ ، وتُرجع كاذبة.

اترك التعليقات إذا كان من المقرر إجراء توضيحات أو إكمال لهذا البرنامج التعليمي.

شغوفة بالتكنولوجيا ، أكتب بسرور على موقع Stealthsetts.com بدءًا من عام 2006. لدي تجربة غنية في أنظمة التشغيل: MacOS و Windows و Linux ، ولكن أيضًا في لغات البرمجة ومنصات التدوين (WordPress) والمتاجر عبر الإنترنت (WooCommerce ، Magento ، Presashop).

بيت مصدر دروس تكنولوجيا المعلومات الخاصة بك ونصائح وأخبار مفيدة. إصلاح تحذير PHP: sizeof (): يجب أن تكون المعلمة صفيفًا أو كائنًا ينفذ قابلاً للعد
اترك تعليقًا