我正在从数据库中检索一些数据,其中的值可能如下所示:
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
答案 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'];
}