我正在尝试自动化我们在工作中所做的事情。我得到了20多个组织的名单,以及他们拥有的客人数量。然后我给他们分配表号。每张桌子可容纳8人。所以首先我指定八倍的公司,然后我开始根据大小对其余公司进行分组。
从概念上讲,我该怎么做。我最初的想法是创建一个具有组织名称和大小的数组。然后添加一个MOD为8的列。然后对数组中每个具有mod 1的项目执行a并查找是否有一个mod 7.除了我不知道如何比较它们,并且模糊从数组中删除它们,我把所有时间花在SQL上,很少使用数组。提前致谢。
答案 0 :(得分:0)
<?
$companies = array(
'GE' => 42,
'ATT' => 38,
'Chevy' => 11
);
foreach($companies as $name => $qty){
echo "$name: \n";
$tables = $qty/8;
$totals = explode('.',$tables);
$extras = (intval($totals[1])/100)*8;
if($extras>8) $extras = $extras/10;
echo "$totals[0] plus {$extras} extra. <br>\n";
}
?>
GE:5加2加。
ATT:4加6加。
雪佛兰:1加3加。现在我想唯一的问题是哪里是我该死的饼干。 :)
答案 1 :(得分:0)
我认为用户注意某些请求的复杂性非常重要。如果我不喜欢这种特殊的运动,我就不会花时间把它扔在一起。
假设你有一个这样的数据数组:
<?php
$companies = array(
'Verizon' => 75,
'GE' => 42,
'JP Morgan' => 38,
'ATT' => 38,
'Chevy' => 11,
'Gray' => 4,
'Individuals' => 0
);
?>
您将执行此脚本:
<?php function completeList($companies,$table_size){echo "<table>\n";echo "<tr><th>Company</th><th>Total</th></tr>\n";foreach($companies as $c=>$q){echo "<tr><td>$c</td><td>$q</td></tr>\n";}echo "</table>\n\n";fullTables($companies,$table_size);}function fullTables($companies,$table_size){$straglers=array();$extras=0;echo "<table>\n";echo "<tr><th>Company</th><th>FullTables</th><th>Extras</th></tr>\n";foreach($companies as $name=>$qty){echo "<tr><td>$name</td>";$tables=$qty/$table_size;if(!strpos($tables,'.'))$tables=number_format($tables,1);$totals=explode('.',$tables);$extras=$qty;if($qty>1)$extras=(intval($totals[1])/100)*$table_size;if($extras>$table_size&&$qty>=$table_size)$extras=$extras/10;if($extras<1&&$extras!=0)$extras=$extras*10;if($qty<=$table_size)$extras=$qty/1;echo "<td>$totals[0]</td><td>{$extras}</td>";$straglers[$name]=$extras;echo "</tr>\n";}echo "</table>\n\n";mixRemaining($companies,$straglers,$table_size);}function mixRemaining($companies,$straglers,$table_size){$assoc=array();$numeric=array();foreach($straglers as $c=>$q){array_push($assoc,$c);array_push($numeric,$q);}$i=0;$l=count($straglers);$jokers=0;$individuals=0;echo "<table>\n";echo "<tr><th>Companies</th><th>Grouped</th><th>Supply</th></tr>\n";while($i<$l){if($i!=$l-1&&$numeric[$i]>0){$members=$numeric[$i]+$numeric[$i+1];if($members>$table_size){$jokers=$members-$table_size;$remainder=$numeric[$i+1]-$jokers;$members=$numeric[$i]+$remainder;}else{$spaces_left=$table_size-$members;$jokers=0;}$mingled="$assoc[$i] and {$assoc[$i+1]}";echo "<tr><td>$mingled</td>";echo "<td>($numeric[$i]+{$numeric[$i+1]})$members</td>";if($jokers){echo "<td class=\"open\">$jokers extra {$assoc[$i+1]} members</td>";}else echo "<td class=\"over\">$spaces_left spaces left</td>";if($jokers&&$i===($l-1))echo "<td>[+$jokersextra{$assoc[$i+1]}member(s)inlasttable.]</td>";$i++;echo "</tr>\n";}else{($jokers>0)?$final="$jokers extra people.":$final='all tables full!';break;}}echo "</table>\n\n";summary($companies,$straglers,$table_size,$final);}function summary($companies,$straglers,$table_size,$final){$total_companies=count($companies);$total_people=array_sum($companies);$total_tables=$total_people/$table_size;echo "<h4 id=\"summary\">$total_companies companies with $total_people people using $total_tables tables leaving $final</h4>\n";} ?>
通过completeList($companies,8);
调用,其中8
是最大表容量:
<div id="table-table">
<h4>Assuming you have a maxium capacity of 8 per table:</h4>
<?php completeList($companies,8); ?>
</div>
我为时尚投入了一些风格。您可以看到输出here的示例。
我唯一无法弄清楚的是那个饼干在哪里?
祝你好运!它实际上是一个相当复杂的脚本,但它似乎完美地工作:)