2015-12-23 4 views
5

Ich benutze diese Funktion, um zu überprüfen, ob bestimmte Produkte im Warenkorb auf meinem woocommerce sind. Dies funktioniert auf meinem localhost aber mir gibt ein:Funktion funktioniert nicht auf dem Server. Kann nicht Funktionsrückgabewert im Schreibkontext verwenden

Kann nicht verwenden Funktion Rückgabewert im Schreibkontext

auf dem Server.

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

Ich versuche, andere Methoden zu finden, dies zu tun, aber ich kann nicht wegen leerer eine Antwort auf mein Problem, ich denke, ist zu finden(), aber wie kann ich tun dies auf andere Art und Weise?

+0

was count? –

Antwort

4

Ich sehe das php markiert 5.3

In PHP-Versionen vor 5.5 empty() wird nur eine Variable annehmen. Sie müssen es wie so zuerst zuweisen:

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

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

Funktioniert, aber jetzt immer wieder wahr – MidouCloud

+0

Dann ist Ihre Schnittmenge zwischen '$ ids' und' $ cart_ids' nicht leer Sie müssen sich das als nächstes ansehen. – danjam

2

Aktualisieren Sie das PHP Ihres Servers.

Überprüfen Sie die PHP-Version auf Ihrem Computer und dem Server. Wie in der documentation erwähnt, konnten Sie in der älteren Version nur die Variable übergeben.

Vor PHP 5.5 unterstützt empty() nur Variablen;

+0

Das weiß ich schon, deshalb habe ich nach einer alternativen Methode gefragt. – MidouCloud

+2

Idealerweise sollten Sie Ihre PHP-Version aktualisieren, wenn es nicht möglich ist, eine Variable mit dem Ergebnis Ihrer Methode zu laden – Ali

0

Die Funktion ist nun wie folgt arbeiten:

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