我们假设我有一个类似于此的表:
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]这样的对象。
答案 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,名称等。在这种情况下,您将离开上面的第一行,插入变量代替1
和value1
,并检查以确保数组键存在,然后再使用+=
运算符,因为如果它尚未定义,它通常会抛出错误:
if(!array_key_exists($yourfield, $values))
$values[$yourfield] = 0;
// continue...