2015-12-23 7 views
5

Sto utilizzando questa funzione per verificare se determinati prodotti sono presenti nel carrello del mio woocommerce. Questo funziona sul mio localhost, ma mi sta dando una:La funzione non funziona sul server. Impossibile utilizzare il valore restituito dalla funzione nel contesto di scrittura

Non è possibile utilizzare il valore di ritorno funzione nel contesto di scrittura

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

Sto cercando di trovare altri metodi per fare questo, ma non posso trovare una risposta al mio problema, credo che sia a causa del vuoto(), ma come posso fare questo su un altro modo?

+0

cosa sull'utilizzo di conteggio? –

risposta

4

Vedo questo è etichettato PHP 5.3

Nelle versioni di PHP prima di 5.5 empty() accetterà solo una variabile. Sarà necessario assegnare prima in questo modo:

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

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

Sta funzionando, ma ora restituisce sempre true – MidouCloud

+0

Quindi la tua intersezione tra '$ ids' e $ cart_ids' non è vuota , devi vedere quello dopo. – danjam

2

Aggiorna il PHP del tuo server.

Controllare la versione di PHP sul computer e sul server. come menzionato nello documentation, nella versione precedente si poteva solo passare la variabile.

Prima di PHP 5.5, empty() supporta solo le variabili;

+0

Lo so già, ecco perché stavo chiedendo un metodo alternativo. – MidouCloud

+2

Idealmente dovresti aggiornare la tua versione di PHP, se non è possibile andare con la ricarica di una variabile con il risultato del tuo metodo – Ali

0

La funzione sta ora lavorando in questo modo:

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