Reputation: 414
I have this $order array and want to store the data in a mysql database.
I need to sort out the products ([type] => physical) and put the key values in one mysql table, and put the other types ([type] => discount and [type] => shipping_fee) in two other tables.
[cart] => Array
(
[items] => Array
(
[0] => Array
(
[type] => physical
[name] => Apple iPhone
[quantity] => 2
[reference] => ABC61
[tax_amount] => 329
[unit_price] => 5490
)
[1] => Array
(
[type] => shipping_fee
[name] => FedEx Express
[quantity] => 1
[reference] => SHIPPING
[tax_amount] => 58
[unit_price] => 290
)
[2] => Array
(
[type] => physical
[name] => IBM Laptop
[quantity] => 1
[reference] => XYZ10
[tax_amount] => 700
[unit_price] => 8000
)
[3] => Array
(
[type] => discount
[name] => Discount Coupon
[quantity] => 1
[reference] => DISCOUNT
[tax_amount] => 0
[unit_price] => -650
)
)
)
Something like this, but I don't know how to properly search the array and retrive the sibling key values:
if ([type] == 'physical') {
get key values for [name] and [quantity] .. insert them into table products
} elseif ([type] == 'shipping_fee') {
get key values for [name] and [quantity] .. insert them into table shipping
} elseif ([type] == 'discount') {
get key values for [name] and [quantity] .. insert them into table discounts
}
Upvotes: 1
Views: 72
Reputation: 78994
Here's one way using a switch to determine table names:
foreach($order['cart']['items'] as $values) {
switch($values['type']) {
case 'physical':
$table = 'products';
break;
case 'shipping_fee':
$table = 'shipping';
break;
case 'discount':
$table = 'discounts';
break;
}
$query = "INSERT INTO $table (name, quantity)
VALUES ({$values['name']}, {$values['quantity']})";
}
Upvotes: 2
Reputation: 909
how about something like this
$physical = array_filter($cart['items'],function($item){
return $item['type'] == "physical";
});
foreach($physical as $item){
//make your inserts
}
The array_filter function in php takes an array, and a function that is called for each element in the array, and returns a new array for each element that evaluated as true.
Upvotes: 0