【发布时间】:2018-02-26 01:36:45
【问题描述】:
我有一个动态网格和每个人的 x 和 y 分数列表 - 只有这些,我如何确定将每个人放在哪个“框”中?
由于网格是动态的,我试图弄清楚如何使用数组来避免硬编码 - 我目前正在循环遍历所有人并将它们添加到包含 x 和 y 的数组中(我可以重做这个如果它更容易)。有了这些值,我怎样才能遍历网格并选择每个框中的人?我怀疑我想得太多了,但我就是无法让它发挥作用。
例如,假设网格是 7 x 5
Array ( ["Bob"] => Array ( ["x"] => 3 ["y"] => 4 )
Array ( ["Fred"] => Array ( ["x"] => 4 ["y"] => 2 )
Array ( ["Tom"] => Array ( ["x"] => 1 ["y"] => 5 )
Array ( ["Joan"] => Array ( ["2"] => 3 ["y"] => 3 )
如果网格是从左下角开始编号的:
29 30 31 32 33 34 35
22 23 24 25 26 27 28
15 16 17 18 19 20 21
8 9 10 11 12 13 14
1 2 3 4 5 6 7
那么鲍勃应该在 24 岁,弗雷德在 11 岁,汤姆在 29 岁,琼在 17 岁等等
如何运行循环以将每个人放置在正确的位置?
到目前为止我已经尝试过:
$xEach=100/$xMax/100;
$xArray=array();
for ($i=$xEach; $i<100; $i=$i+$xEach) {
$xArray[]=$i;
}
$yEach=100/$yMax/100;
$yArray=array();
for ($i=$yEach; $i<100; $i=$i+$yEach) {
$yArray[]=$i;
}
$x=array();
$y=array();
<loop through people>
$originalValue=$res['value'];
$axis=res['axis'];
$name=$res['name'];
if ($axis=="x") {
$newValue=$originalValue/$xMax;
$hit=0;
foreach ($xArray as $value) {
if ($newValue<$value&&$hit==0) {
$hit++;
$x["$originalValue"][]=$name;
}
}
} else {
$type="y";
$newValue=$originalValue/$yMax;
$hit=0;
foreach ($yArray as $value) {
if ($newValue<$value&&$hit==0) {
$hit++;
$y["$originalValue"][]=$name;
}
}
}
</loop>
<div class="customgridwrapper">
<?php
$box=0;
for ($yLoop=$yMax; $yLoop>=$yMin; $yLoop--) { ?>
<?php for ($xLoop=$xMin; $xLoop<=$xMax; $xLoop++) {
$box++;
?>
<div class="griditem">
<span><?=$box?></span>
</div>
<?php } ?>
<?php } ?>
</div>
【问题讨论】:
-
到目前为止你有没有尝试过?
-
是的,加载了一些代码,但这是关于版本 15,所以现在变得非常混乱