2014-10-22 6 views
0

я следующие данные я вернусь из MySql:PHP группа массива для условия состояния

Массив ( [0] => StdClass Object ( [ID] => 1 [list_id] = 2 [цена] => 10 [tax_type] => пользовательские )

[1] => stdClass Object 
    (
     [id] => 2 
     [list_id] = 2 
     [price] => 10 
     [tax_type] => freezone 
    ) 

[2] => stdClass Object 
    (
     [id] => 3 
     [list_id] = 3 
     [price] => 10 
     [tax_type] => freezone  ) 

[3] => stdClass Object 
    (
     [id] => 4 
     [list_id] = 3 
     [price] => 10 
     [tax_type] => custom  ) 

)

ПДР ta в основном показывает, например, несколько покупок в рамках одного заказа (например, 3 покупки, с разными ценами/налогами).

Я могу, например, получить цены, как я хотел бы с помощью:

foreach($array_data as $out) { 
foreach($out as $inner) { 
$sum['price'] += $inner->price; 
     } 
} 

Однако у меня возникают трудности при добавлении условия, к примеру, если я:

if ($tax_type == "custom") { 
       $sum['price'] += $inner->price; 
       $tax_band = ($tax_rate/100) * $inner->price; 
       $tax band = round($tax_band, 2); 
      } else { 
       $sum['price'] += $inner->price; 
       $tax_band = ($tax_rate/100) * $inner->price; 
       $tax band = round($tax_band, 2); } 

работы ok - однако у меня есть третий сценарий здесь - если элемент массива содержит как статус пользовательской/свободной зоны, он, похоже, не слишком хорошо работает с моим условием, так как я хотел бы перебрать массив и выработать индивидуальные диапазоны налоговых ставок, а не устанавливать их как один элемент.

ответ

0

Вы можете использовать инструкцию elseif или switch.

Php api control structures

Пример ELSEIF заявления будет:

if ($tax_type == "custom") { 

    //logic for custom 

} 
elseif($tax_type == "freezone"){ 

    //logic for freezone 

} 
elseif($tax_type == "custom/freezone") { 

    //logic for custom/freezone 

} 
+0

я уже условия - здесь главное, когда я пытаюсь передать: ELSEIF ($ tax_type == " custom/freezone " Это не делает ничего относительно группировки - то есть оно должно применяться к условию, если оба состояния найдены в массиве. – Poiro

+0

В приведенном примере показаны три записи: два с freezone и один с пользовательскими Что за wo uld возвращенная запись будет для экземпляра обоих? Есть ли несколько индексов для каждого из них? Соединяются ли они вместе как строковое значение в индексе tax_type? – commanderZiltoid