在php“matrixes”中存储mysqli查询

时间:2013-11-12 02:46:31

标签: php matrix mysqli

我们假设我有一个类似于此的表:

Id Name Value1 Value2 Value3
1  Bla  1      5      1
2  Blu  4      0      2

如何在PHP中将其放入矩阵格式(或类似)中,以便我可以使用它?

我想用包含以下内容的部分进行一些计算和排序:

1  5  1
4  0  2

所以我可以订购并永久改变主矩阵。例如:

为每列指定50%(或其他)的权重,然后将与较低值关联的列向左移动。

示例:

1*0.5 + 4*0.5 = 2.5
5*0.5 + 0*0.5 = 2.5
1*0.5 + 2*0.5 = 1.5

最终输出:

Id Name Value3 Value2 Value1
1  Bla  1      5      1
2  Blu  2      0      4

在C中这很容易做到,但在PHP中我觉得这样做非常复杂,因为没有像M [i,j]这样的对象。

1 个答案:

答案 0 :(得分:0)

您需要在查询的每次迭代中访问该列,而不能像使用行结果一样直接访问该列:

$values = array();
$multiplier = 0.5;

foreach($result as $row) {
    $values[1] += $row['value1'] * $multiplier;
    $values[2] += $row['value2'] * $multiplier;
    $values[3] += $row['value3'] * $multiplier;
}

print_r($values);

虽然根据列的名称,您可以在PHP中循环它们以定义变量或数组键而不是手动执行(特别是如果您有很多)。取决于您的列名称。如果您的批次与数字等无关,则可以遍历列名并排除某些列,例如您处理的ID,名称等。在这种情况下,您将离开上面的第一行,插入变量代替1value1,并检查以确保数组键存在,然后再使用+=运算符,因为如果它尚未定义,它通常会抛出错误:

if(!array_key_exists($yourfield, $values))
    $values[$yourfield] = 0;
// continue...