PHP和SQLite - 将某些列值相乘

时间:2013-01-29 06:19:47

标签: php sqlite

我正在从数据库中检索一些数据,其中的值可能如下所示:

Column1 | Column2
-----------------
Bob     | 24
Joe     | 17
Jimmy   | 38
Joe     | 10
Bob     | 5
Sam     | 8

有了这些数据,我想以某种方式选择Bob行并将它们相乘。我想对Column1中匹配的所有行执行此操作。我并不担心在SQLite中这样做,但在PHP中最好的方法是什么?我现在通过执行以下操作将结果添加到PHP中的数组:

$myArray[$resultRow['Column1']] = $resultRow['Column2'];

我想知道如何浏览并找到匹配的键,将它们的值相乘,并输出类似

的内容

Column1 = Column2-a * Column2-b

2 个答案:

答案 0 :(得分:1)

考虑这段代码:

$results = array();
foreach(array('Bob' => 24, 'Joe' => 17, 'Jimmy' => 38, 'Joe' => 10, 'Bob' => 5, 'Sam' => 8) as $key => $val){
 $results[$key][] = $val;
}
echo  '<pre>';
print_r($results);
echo  '</pre>';

out put:

Array
(
    [Bob] => Array
        (
            [0] => 5
        )

    [Joe] => Array
        (
            [0] => 10
        )

    [Jimmy] => Array
        (
            [0] => 38
        )

    [Sam] => Array
        (
            [0] => 8
        )

)

PHP忽略重复键,你必须在从数据库中检索数据时创建$ results数组,假设你这样做:

while () {
    $col1 = $row["col1"];
    $col2 = $row["col2"];
    $results[$col1][] = $row["col2"];
}

现在结果数组必须是这样的:

Array
(
    [Bob] => Array
        (
            [0] => 24
            [1] => 5
        )

    [Joe] => Array
        (
            [0] => 17
            [1] => 10
        )

    [Jimmy] => Array
        (
            [0] => 38
        )

    [Sam] => Array
        (
            [0] => 8
        )

)

现在,很容易搜索像这样的colmun1名称:

$values_for_colmn1 = $results[$column1]; //which is an array

//对数组产品使用array_product()函数

$product_for_column1 = array_product($values_for_colmn1);

答案 1 :(得分:1)

首先,只读鲍勃的值:

$stmt = $db->prepare('SELECT Column2 FROM MyTable WHERE Column1 = ?')
$stmt->bindValue(1, 'Bob', SQLITE3_TEXT);
$result = $stmt->execute();

然后,将所有这些相乘:

$value = 1.0;
while ($res = $result->fetchArray()) {
    $value = $value * $res['Column2'];
}