2016-07-20 5 views
0

Aus dem folgenden Array versuche ich, die Menge und den Preis für die Bedingung multiplizieren, dass itemType Zo ist.Multiplizieren Sie zwei Array-Werte basierend auf den Werten der anderen Werte

(
    [customer] => 4 
    [itemNo] => Array 
     (
      [0] => 1 
      [1] => 2 
     ) 

    [itemName] => Array 
     (
      [0] => Type A 
      [1] => Type B 
     ) 

    [itemType] => Array 
     (
      [0] => Zo 
      [1] => Ram 
     ) 

    [quantity] => Array 
     (
      [0] => 2 
      [1] => 3 
     ) 

    [price] => Array 
     (
      [0] => 500 
      [1] => 2000 
     ) 
) 

Hier ist, was ich bisher versucht habe, aber ohne Erfolg.

$lq = 0; 
$total =0; 

    for ($i=0;$i<count($_REQUEST['price']);$i++) { 
     if(in_array("Ram", $_REQUEST['itemType'])){ 
       $total += $_REQUEST['price'][$i] * $_REQUEST['quantity'][$i]; 
     }else{ 
       $lq += $_REQUEST['quantity'][$i]; 
     } 
    } 

echo ($total).'<br>'; 
echo ($lq); 

Meine erwartete Ausgabe ist:

$total = 1000;//Quantity x Price 
$lq = 3//Quantity only 
+0

dies erfüllen immer 'in_array ("Ram", $ _REQUEST [ 'itemType'])', benutzen Sie einfach '==' in jeder Iteration stattdessen, genau wie die Antwort unter – Ghost

+0

@ bma, können Ihre Daten mehrere Elemente vom Typ 'Zo' haben, oder hätte der Eingang nur ein' Zo'? – BeetleJuice

+0

@BeetleJuice '$ _REQUEST' enthält Formulareingabe, daher wählt der Benutzer vermutlich den Typ. – Barmar

Antwort

1

Sie sind nicht itemType des gleichen Artikels Überprüfung, die Sie auf die gesamte Zugabe sind. Sie überprüfen nur, ob eine der Elemente itemType haben. Sie suchen auch nach Ram, nicht Zo.

if ($_REQUEST['itemType'][$i] == 'Zo') { 
    $total += $_REQUEST['price'][$i] * $_REQUEST['quantity'][$i]; 
} else { 
    $lq += $_REQUEST['quantity'][$i]; 
} 
+0

@bmapachuau liefert korrekte Ausgabe https://3v4l.org/LTuYo – Ghost

0

Versuchen:

$data = $_REQUEST; 
$key = array_search('Zo',$data['itemType']); 
$total = $data['quantity'][$key] * $data['price'][$key];//Zo price*qty 
$lq = array_sum($data['quantity']) - $data['quantity'][$key];//non-Zo qty 

Live demo

+0

Dies funktioniert nicht, wenn mehr als ein 'Zo' Elemente vorhanden sind. – Barmar

+0

Wahr; Ich frage das OP, ob das eine Möglichkeit ist mit seiner Eingabe – BeetleJuice

+0

'$ lq' enthält die Gesamtmenge aller Items, die nicht' itemType = Zo' haben – Barmar

Verwandte Themen