Sửa chữa PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 

Một lỗi PHP xuất hiện trong nhiều WordPress Plugins đã lâu không được cập nhật hoặc không tương thích với các phiên bản PHP mới hơn. PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable.

Trong kịch bản của chúng tôi, lỗi PHP xảy ra trong một mô-đun Cross Sell Product Display cho WooC Commerce.

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

Tại sao lỗi xảy ra PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable ?

Vấn đề tạo ra lỗi PHP này là chức năng sizeof() trong phiên bản PHP 7.2 trở lên, có thể tạo ra lỗi này, nếu tham số đã cho không phải là một array hoặc một đối tượng thực hiện giao diện Countable.

Do đó, lỗi thường xuất hiện sau khi cập nhật phiên bản PHP.

Cách giải quyết các lỗi PHP được tạo bởi sizeof()?

Phương pháp đơn giản nhất là thay thế lời gọi hàm sizeof() với lời gọi hàm count().

Trong trường hợp những người sử dụng các phiên bản cũ của mô-đun Cross Sell Product Display, giải pháp rất đơn giản. Các chức năng từ dòng 18 inch sẽ được thay thế 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;
	
}

Đoạn mã trên trong đó nó là sizeof() sẽ được thay thế bởi:

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

Sửa đổi này đầu tiên kiểm tra nếu $crosssells là một array sử dụng chức năng is_array() và, nếu không, trả về false.

Trong trường hợp $crosssells là một array, chức năng được sử dụng count() xác định số phần tử trong array. Nếu số phần tử bằng XNUMX hoặc $crosssells là một chuỗi rỗng, false được trả về.

Để lại nhận xét nếu có bất kỳ sự làm rõ hoặc bổ sung nào cho hướng dẫn này.

làm thế nào để » WordPress » Sửa chữa PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 

Đam mê công nghệ, thích test và viết các bài hướng dẫn về hệ điều hành macOS, Linux, Windows, Về WordPress, WooCommerce và định cấu hình máy chủ web LEMP (Linux, NGINX, MySQL và PHP). Tôi viết tiếp StealthSettings.com từ năm 2006 và một vài năm sau, tôi bắt đầu viết trên iHowTo.Tips hướng dẫn và tin tức về các thiết bị trong hệ sinh thái Apple: iPhone, iPad, Apple Xem, HomePod, iMac, MacBook, AirPods và phụ kiện.

Để lại một bình luận