2017-08-18 3 views
0

Ich wollte einen Wert auf meinem Array hinzufügen, wenn es existiert. Wenn nicht, dann erstellen Sie einen neuen.Wert hinzufügen auf Array, wenn es existiert

$orders = array(
       array("qty" => 3,"piece_type"=> "Documents (Up to 1kg)"), 
       array("qty" => 2,"piece_type"=> "Documents (Up to 1kg)"), 
       array("qty" => 4,"piece_type"=> "Large (10-20kg 150cm)") 
      ); 

$sizes = array(
    "Documents (Up to 1kg)"=>10, 
    "Large (10-20kg 150cm)"=>20 
); 

$wpc_total_cost = array(); 
$i = 0; 

foreach($orders as $value) 
{  
    $i++; 
    $wpc_total_cost[$value['piece_type']] += $value['qty'] * $sizes[$value['piece_type']]; 
} 

print_r($wpc_total_cost); 

Ich versuchte array_exist Ich verstehe nicht ganz die Logik.

mein Fehler:

NOTICE Undefined index: Documents (Up to 1kg) on line number 21 

NOTICE Undefined index: Large (10-20kg 150cm) on line number 21 
Array ([Documents (Up to 1kg)] => 50 [Large (10-20kg 150cm)] => 80) 

Antwort

0

das Problem in dieser Linie ist:

$wpc_total_cost[$value['piece_type']] += $value['qty'] * $sizes[$value['piece_type']]; 

Betrieb += eigentlich bedeutet dies:

$wpc_total_cost[$value['piece_type']] = $wpc_total_cost[$value['piece_type']] + $value['qty'] * $sizes[$value['piece_type']]; 

Beachten Sie, dass wir verwenden $wpc_total_cost[$value['piece_type']] auf rechte Seite des Ausdrucks bedeutet es, dass es definiert werden sollte, aber auf der ersten Iterati on of foreach Schleife existiert nicht.

Eine schnelle Lösung zu verwenden:

if (!isset($wpc_total_cost[$value['piece_type']])) 
    $wpc_total_cost[$value['piece_type']] = 0; 
$wpc_total_cost[$value['piece_type']] += $value['qty'] * $sizes[$value['piece_type']]; 
1

Versuchen Sie es mit array_key_exists. Ich machte eine Variable mit dem Namen nur so die Formel wurde nicht an zwei Stellen wiederholt.

$orders = array(
    array("qty" => 3,"piece_type"=> "Documents (Up to 1kg)"), 
    array("qty" => 2,"piece_type"=> "Documents (Up to 1kg)"), 
    array("qty" => 4,"piece_type"=> "Large (10-20kg 150cm)") 
); 

$sizes = array(
    "Documents (Up to 1kg)"=>10, 
    "Large (10-20kg 150cm)"=>20 
); 

$wpc_total_cost = array(); 
$i = 0; 

foreach($orders as $value) 
{ 
    $i++; 

    $cost = $value['qty'] * $sizes[$value['piece_type']]; 

    if(array_key_exists($value['piece_type'], $wpc_total_cost)){ 
     $wpc_total_cost[$value['piece_type']] += $cost; 
    } else { 
     $wpc_total_cost[$value['piece_type']] = $cost; 
    } 
} 

print_r($wpc_total_cost); 
Verwandte Themen