2015-12-23 15 views
5

Bu işlevi kullanıyorum, ürünlerimin ana kafamda olup olmadığını kontrol etmek için kullanıyorum. Bu benim localhost üzerinde çalışır fakat bana veriyor: aİşlev sunucuda çalışmıyor. Yazma içeriğinde işlev dönüş değeri kullanılamıyor

yazma bağlamında sunucusunda

yılında işlev dönüş değer kullanılamaz.

function product_is_in_the_cart() { 
$ids = array('139, 358, 359, 360'); 

$cart_ids = array(); 

// Find each product in the cart and add it to the $cart_ids array 
foreach(WC()->cart->get_cart() as $cart_item_key => $values) { 
    $cart_product = $values['data']; 
    $cart_ids[] = $cart_product->id; 
} 

// Si uno de los productos introducidos en el array esta, devuelve false 
if (! empty(array_intersect($ids, $cart_ids))) { 
    return true; 
} else { 
    return false; 
}} 
Bunu yapmak için başka yöntemler bulmaya çalışıyorum ama benim soruna bir cevap bulamıyorum

bence çünkü boş taşımaktadır () ama nasıl ben bu diğer yolda yapabilir?

+0

neyi sayımı kullanmaya ne dersiniz? –

cevap

4

ki bu bir değişkeni kabul edecek 5.5 empty() önce php sürümlerinde php 5.3

etiketli görüyoruz. Öyle gibi ilk atamanız gerekir:

$isEmpty = array_intersect($ids, $cart_ids); 

if (!empty($isEmpty)) { 
... 
} 
+0

metodunun sonucuyla bir değişken şarj edilmek isteyin, ama şimdi her zaman true – MidouCloud

+0

döndürür. Sonra, $ ids 'ile $ cart_ids' arasındaki kesişiminiz boş değil Daha sonra ona bakman gerekiyor. – danjam

2

Sunucunuzun PHP sürümünü yükseltin. Makinenizdeki ve sunucunuzdaki PHP sürümünü kontrol edin.

documentation da belirtildiği gibi, eski sürümde sadece değişkeni geçebilirsiniz.

PHP 5.5'ten önce, boş() yalnızca değişkenleri destekler;

+0

Zaten bunu biliyorum, bu yüzden neden alternatif bir yöntem istiyordum. – MidouCloud

+2

İdeal olarak PHP sürümünüzü yükseltmelisiniz, eğer mümkünse, – Ali

0

işlevi artık böyle çalışıyor:

function product_is_in_the_cart() { 
global $woocommerce; 
$items = array('139, 240, 242, 358, 359, 360'); 
// Create array from current cart 
$cartitems = $woocommerce->cart->get_cart(); 
// Count items in cart 
$itemcount = count($cartitems); 
     foreach($cartitems as $cartitem) { 
      $productid = $cartitem[product_id]; 
      if(in_array($productid,$items)) { 
       return true; 
      } else 
      { 
       return false; 
      } 
     } 
} 
İlgili konular