1

データベースからデータを取得しています。値は次のようになります。

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

このデータを使用して、どういうわけかボブの行を選択し、それらを乗算したいと思います。Column1で一致するすべての行に対してこれを実行したいと思います。私はSQLiteでそれを行うことについて心配していませんが、PHPでこれを行うための最良の方法は何ですか?私は現在、次のようにして結果をPHPの配列に追加しました。

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

これをナビゲートして一致するキーを見つけ、それらの値を乗算して、次のようなものを出力する方法を考えていました。

Column1 = Column2-a * Column2-b

4

2 に答える 2

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>';

出力:

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);
于 2013-01-29T07:41:49.770 に答える
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'];
}
于 2013-01-29T08:04:51.317 に答える