2013-08-05 86 views
0

我要为这个问题疯了......试图找出它几乎4个小时没有成功......如何在4个阵列的多维数组中分配mysql结果集

我在尝试在4个数组的多维数组中获取mysql查询结果集。因此,如果结果集返回8条记录,则数组将包含4条2条记录。如果结果集返回20条记录,阵列将包含4个阵列的5个记录,等等...这是比较容易的部分...

我遇到麻烦时,结果集不能是事情均匀分布在4个阵列中。例如,如果结果集返回14条记录,那么第一个数组包含4个记录,第二个数组包含4个记录,第三排3条记录和第四阵列3个记录...

下面是我编写到目前为止:

... 

$num_rows = $stmt->num_rows; //number of records returned by the result set 
$arrays = 4; //distributed in 4 arrays 

$per_array = (int)($num_rows/$arrays); //minimum per array 
$remainder = $num_rows % $per_array; //the remainder 

$array_r = array(); 
$i = 1; 
$col = 1; 

while ($stmt->fetch()) { 
    if ($i <= $per_array) { 
     $i++; 
    } else { 
     $i = 1; 
     $col++; 
    } 

    $array_r[$col][] = array(...values from result set...); 
} 
+0

对不起的错字...编辑和纠正 – Marco

回答

3

听起来你也得太多。

$i = 0; 
// Create 4 subarrays (you could do this programmatically as well) 
$array_r = array(array(), array(), array(), array()); 
while ($stmt->fetch()) { 
    array_push($array_r[$i], array(... values ...)); 
    $i = ($i + 1) % 4; 
} 
+0

yeap,这个为我工作..。感谢 – Marco

+0

我如何改变它,因此值显示从上到下没有离开吗?在这种情况下,顺序至关重要 – Marco

1

为什么不把结果集放入一个数组,然后使用array_chunk

+0

我想他希望他们尽可能平均分配。即,阵列应大小的(4,4,3,3)在他的例子,而不是(4,4,4,2)。无论这是否是真正的需求,都在空中。 –

+0

@ChrisHayes这正是我想要的......对不起,我的英语不是我的第一语言 – Marco

+0

@ChrisHayes,后离开它模糊contains'是否'是指作为投诉或目标。 –