У меня есть два массива, оба ассоциативных;
ArrayUneaten ( lemon=> 7, banana=>6, apple=>10)//the units of UNeaten fruit
ArrayOrdered (lemon =>10, strawberry =>10, Kiwi=>0, Apple=>20, Banana=>6) // the units of ordered fruit
Я хочу создать третий массив (числовой в порядке, если в том же порядке, что и ArrayOrdered)
всех вариантов фруктов и% съеденных фруктов (по сравнению с заказанными фруктами).
(примечание по другим причинам, если заказанное значение = 0,% съедено = 0%)
(NB2, обратите внимание, что%, требуемый для клубники, равен 100, клубника не съедается, 10 заказано, поэтому 10 съедено)
Так желаемый массив
ArrayEatenPercentage (70, 100, 0, 50, 0)
Моя попытка кодирования
$CompletedPercentagesArray = array ();
foreach( $ArrayOrdered as $fruitOrdered => $unitsOrdered) {
if ($unitsOrdered == 0){
//if it's zero it's never been selected
$completedPercentage = 0;
}
foreach( $ArrayUneaten as $fruitUneaten => $unitsUneaten) {
if ( $fruitUneaten == $fruitOrdered){
// ($totalCardsChosen = $timesSelected*25; - please ignore)
$percentageUneaten = 100*($fruitUneaten/$unitsOrdered);
$percentageEaten = 100 - $percentageUneaten;
$completedPercentage = round ($percentageEaten, 1);
}
else {//if this is true then it's been selected and been finished
$completedPercentage = 100;
}
}
array_push( $completedPercentagesArray, $completedPercentage ); //this adds the variable to the array
}
print_r($completedPercentagesArray);
Токовый выход неожиданный.
Только последнее значение ArrayUneaten обрабатывается правильно.
Другие значения возвращают 100%.
ArrayEatenPercentage (100, 100, 100, 50, 100)