2015-09-25 27 views
0

我正在開發一個簡單的預訂系統,並且我希望根據客艙的容量分配客艙,至此我實現了將客艙分組如果客艙不具備整個團隊的能力,則需要組。PHP幫助根據客艙容量爲客艙分組

<?php 
$group = 14; 

$cabinsArray = array("1"=>15,"2"=>3,"3"=>8); 

$cantCab = count($cabinsArray); 

echo "Available cabins: ".$cantCab."<br>"; 

$cabins = 0; 

foreach($cabinsArray as $cabin => $capacity){ 
    $group = $group - $capacity; 
    $cabins++; 
    if($group < 0){ 
     break; 
    } 
} 

if($group > 0){ 
    echo 'No cabins available, remains '.$grupo.' people out'; 
}else if($cabins > $cantCab){ 
    echo 'No cabins available'; 
}else{ 
    echo ceil($cabins); 
} 
?> 

問題來當它分配小木屋,如果我的組是24人,我的小屋能力順序是15,3,8,而不是選擇15,並選擇3個艙8。

如何根據容量選擇艙室?

在此先感謝

+0

排序'$ cabinsArray'從最高到最低? – Rasclatt

+0

謝謝,但如果我這樣做,那麼它將分配15人的2艙18人,導致我放在OP中的小木屋陣列只是一個參考 –

+0

哦,是陣列的關鍵是艙的數量和價值是該艙的容量? – Rasclatt

回答

0

這裏只是一個起點。該算法可能會更復雜,以弄清楚如何分割容量,但這是一個起點。你可以只使用array_pop()end()來從$new陣列最低:你循環之前

$group   = 14; 
$cabinsArray = array("32"=>3,"4"=>14,"200"=>8,"12"=>10,"6"=>4); 
arsort($cabinsArray); 
$cabinNums  = array_keys($cabinsArray); 
$cabinCaps  = array_values($cabinsArray); 
$highest  = $cabinCaps[0]; 
$diff   = $group - $highest; 

$i = 0; 
foreach($cabinCaps as $key => $value) { 
     if(($value >= $diff)) 
      $new[$cabinNums[$key]] = $cabinCaps[$key]; 
     $i++; 
    } 

print_r($new); 
print_r($highest); 
+0

謝謝,最後我得到了,它比我更容易,當然使用MySQL,我會讓答案在這裏的OP –