我正在使用多维数组,我很难尝试创建动态兼容性图表。
Given Data :
4 instances of Value 1
7 instances of Value 2
理想的最终结果示例
如果有4个值1和7值2'
[0] Value 2
[1] Value 1
[2] Value 2
[3]
[4] Value 2
[5] Value 1
[6] Value 2
[7]
[8] Value 2
[9] Value 1
[10] Value 2
[11] Value 1
[12] Value 2
如果有4个值1和4个值2(尝试均匀分隔它们而不重叠)
[0] Value 1
[1] Value 2
[2]
[3] Value 1
[4] Value 2
[5]
[6]
[7] Value 1
[8] Value 2
[9]
[10]
[11] Value 1
[12] Value 2
如果有2个1和3个实例。
[0] Value 1
[1] Value 2
[2]
[3]
[4]
[5]
[6] Value 2
[7]
[8]
[9]
[10]
[11] Value 1
[12] Value 2
我的阵列的铲斗尺寸为12-24。在示例中,我使用12.如果实例数量不适合12个桶,则可以一直向上移动到24.如果它不适合24,则给出错误。
我尝试使用array_pop和反转数组创建的任何循环都会在数组中间创建空洞,或者它不会均匀地展开实例。
编辑: 这是我尝试过的。
$table_array = range(0,12);
// Method 1
for ($i = 0; sizeof($table_array); $i++)
{
$ready_array[] = ($i % 2) ? array_pop($table_array) : array_shift($table_array);
}
// Method 2
for ($i = 0; $i < sizeof($table_array); $i++)
{
$index = ($i % 2) ? sizeof($table_array) - ceil($i / 2) : ceil($i / 2);
$ready_array[$index] = $table_array[$i];
}
ksort($ready_array);
项目详情和目标
我有一份兼容和不兼容的药片清单。
我让用户选择哪些药片以及他们服用了多少药片。
基于此,我搜索数据库并根据兼容性匹配药片,创建一个名为值1和值2的列表。
我至少有12个小时的时间来服药。
我应该腾出空间让我们在12小时的时间内以1小时的间隔均匀地说4钙和3铁,不要让它们重叠。如果他们选择12粒钙和12粒铁,我可以推迟24小时让他们服用这些药片。
答案 0 :(得分:0)
您的问题的一些想法:
使用array_chunk()
和array_count_values()
<?php
$myarray = array(2,1,2,'',2,1,2,'',2,1,2,1,1,2,1,2,'',2,1,2,'',2,1,2,1,2);
$tests = array_chunk($myarray, 13);
//print_r($tests);
function mytest($tests)
{
foreach($tests as $test)
{
// play your test !
print_r(array_count_values($test));
}
}
// add your argument for your test
echo mytest($tests);
?>
输出:
Array
(
[2] => 6
[1] => 5
[] => 2
)
Array
(
[2] => 7
[1] => 4
[] => 2
)