PHP умножение данных массива по принципу 1-2|1-3|2-3

216
01 июля 2018, 13:40

Есть динамический массив принципа:

Array ( [sum] => 1 [k1] => 1 [w1] => 1 [k2] => 2 [w2] => 1 [k3] => 3 [w3] => 1 [first] => 2 [second] => 3 )

Как можно сделать умножение значений массива по принципу - выдирать ключ k и перемножать значения по принципу 1-2|1-3|2-3 && 1-2|1-3|1-4|2-3|2-4|3-4 с первого по последнее, со второго по последнее и т.д.

Answer 1

не совсем ясно, что надо со всем этим делать, но допустим, если надо сложить произведение таких пар, то код может быть следующим:

Исходные:

$data = [ "sum" => 1, "k1" => 1, "w1" => 1, "k2" => 2, "w2" => 1, "k3" => 3, "w3" => 1, "first" => 2, "second" => 3 ];

Фильтруем нужные ключи

$kdata = array_filter($data, function($k){ return preg_match('/^k\d+$/', $k);}, ARRAY_FILTER_USE_KEY);

Считаем формулу

$result = 0;
while($kdata){
    $el = array_shift($kdata);
    $result += $el*array_sum($kdata);
}

Пока массив не пустой, берем первый элемент, и считаем сумму его произведений на оставшиеся элементы.

А как считать по принципу: первый элемент на второй и запись в таблицу, первый элемент на третий и так же запись в таблицу?

а так и считать. пишите двойной цикл и формируете массив вставляемых значений. Потом подготавливаете sql запрос и в цикле выполняете его по сформированному массиву.

$kdata = array_values($kdata);
$import = [];
foreach($kdata as $i1 => $v1){
    for($i2 = $i1 + 1; $i2 < count($kdata); $i2++){
        $import[] = [
                ':idx_1' => $i1 + 1,
                ':idx_2' => $i2 + 1,
                ':v_1'   => $v1,
                ':v_2'   => $kdata[$i2],
                ':res'   => $v1 * $kdata[$i2],
            ];
    }
}
$stmt = $pdo->prepare("INSERT INTO table1 (idx_1, idx_2, v1, v2, res) VALUES (:idx_1, :idx_2, :v_1, :v_2, :res)");
foreach($import as $v){
    $stmt->execute($v);
}
READ ALSO
QML. Последний дочерний элемент. C++

QML. Последний дочерний элемент. C++

Как получить последний дочерний элемент у объекта?

204
Вывод бинарного дерева opengl

Вывод бинарного дерева opengl

Есть программа выводящая бинарное дерево в консоль, но там это выглядит не очень понятно и красивоВопрос в следующем, есть ли библиотека...

212
Связь int и char C++

Связь int и char C++

Здраствуйте! Проводил несколько опытов, и увидел, что когда читаешь цифру из чаровой строки, то число ровно на 48 больше чем эта цифраПравда...

193
подключение к mysql visual studio 2017

подключение к mysql visual studio 2017

Пытаюсь соединить проект c++ и mysqlСделал все что указано в инструкции https://kildekode

204