Php 函数来平衡多个数组
假设我有一个函数Php 函数来平衡多个数组,php,arrays,Php,Arrays,假设我有一个函数 evenOut($array, $limit){ //returns exactly $limit items } 这个数据呢 $animals = array(); $animals['barn'] = array_fill(0,20, 'b'); $animals['forest'] = array_fill(0,20, 'f'); $animals['house'] = array_fill(0,20, 'h'); $animals['mountain'] =
evenOut($array, $limit){
//returns exactly $limit items
}
这个数据呢
$animals = array();
$animals['barn'] = array_fill(0,20, 'b');
$animals['forest'] = array_fill(0,20, 'f');
$animals['house'] = array_fill(0,20, 'h');
$animals['mountain'] = array_fill(0,20, 'm');
$animals = array();
$animals['barn'] = array_fill(0,1, 'b');
$animals['forest'] = array_fill(0,3, 'f');
$animals['house'] = array_fill(0,8, 'h');
$animals['mountain'] = array_fill(0,1, 'm');
我想返回最多10只动物,但是它们应该在它们来自的地方均匀分布。
所以如果我做了evenOut(动物,8美元)代码>我会得到两个('b','b','f','f','h','h','m','m',)
evenOut($animals,2)
应返回('b','f')
如果我有这些数据
$animals = array();
$animals['barn'] = array_fill(0,20, 'b');
$animals['forest'] = array_fill(0,20, 'f');
$animals['house'] = array_fill(0,20, 'h');
$animals['mountain'] = array_fill(0,20, 'm');
$animals = array();
$animals['barn'] = array_fill(0,1, 'b');
$animals['forest'] = array_fill(0,3, 'f');
$animals['house'] = array_fill(0,8, 'h');
$animals['mountain'] = array_fill(0,1, 'm');
evenOut(动物,8美元)代码>预期结果将是('b','f','f','f','h','h','h','m',)
evenOut(动物,10美元)代码>预期结果将是('b','f','f','f','h','h','h','h','h','m',)
evenOut(动物,10美元)代码>预期结果将是('f','f','f')
我不确定该如何处理这个问题,我希望有一个简单的方法我自己的解决方案
<?php
function eventOut($animals, $limit)
{
$j = 0;
$returnAnimals = array();
for($i=0; $j<$limit; ++$i) {
foreach ($animals as $animal) {
if (isset($animal[$i] && $j<$limit) {
array_push($returnAnimals, $animal[$i]);
++$j;
} else {
$extra++;
}
}
}
return $returnAnimals;
}
function evenOut($array, $limit){
$indexes = count($array)-1;
$leveled = array();
$count=0;
for($c= 0; $c < $limit; $c++){
for($i = 0; $i <= $indexes; $i++){
if(isset($array[$i][$c])){
if(!isset($leveled[$i]))
$leveled[$i] = array();
$leveled[$i][]= $array[$i][$c];
$count++;
}
if($count == $limit)
break 2;
}
}
$merged = array();
foreach($leveled as $array)
$merged = array_merge($merged, $array);
return $merged;
}
函数均衡($array,$limit){
$index=count($array)-1;
$leveled=array();
$count=0;
对于($c=0;$c<$limit;$c++){
对于($i=0;$i),第一个答案有3个问题,未定义的$extra和,混合动物,如果动物小于限制,则无限执行。第二个答案也没有预期的效果,但感谢您的努力!