Как суммировать все значения строк в многомерном массиве с помощью mysqli? - PullRequest
0 голосов
/ 26 февраля 2019

Привет каждый, у меня есть небольшая проблема, есть в MySQL и PHP

У меня есть таблица с несколькими строками, и я заберу для одного значения столбца в сумме массива этих значений на основе строк.

enter image description here

здесь я помещу изображение как этот массив [0] + массив [0] + массив [0] = некоторое значение

и массив [n] + массив [n] + массив [n] = некоторые значения могут выводить как

мой код

<?php  
$sql2="SELECT * FROM `purchase_data` where `project_id` ='$proid'";
$result2 = $conn->query($sql2);
$count2=$result2->num_rows;

if ($count2 > 0) {
    $x=1;
    $tot = 0;
    while ($pur_row = $result2->fetch_assoc()) {
        //$proid =$pur_row['pur_id']; 

        $category = $pur_row['pur_category'];
        $categories = explode(',',$category);
        $lenght = count($categories);
        //var_dump($category);


        $est_amou = $pur_row['pur_amount'];
        $est_amount = explode(',',$est_amou);
        var_dump($est_amount);
        //echo $ans_count = array_sum($est_amount);

        //echo $value = array_sum(array_column($est_amount,'pur_amount'));   

        $sum = array();
        foreach ($categories as $key => $sub_array) {
            echo $sub_array;
            foreach ($est_amount as $sub_key => $value) {

                echo $value;
                //If array key doesn't exists then create and initize first before we add a value.
                //Without this we will have an Undefined index error.
                if( ! array_key_exists($sub_key, $sum)) 
                    $sum[$sub_key] = 0;
                //Add Value
                $sum[$sub_key]+=$value;
            }
        }
        print_r($sum);

        for($i=0; $i< $lenght; $i++)
        { 
            $x++;
            $tot = $tot + $est_amount[$i];  
           // $balance = $estimation - $tot;
        } 
    } 
}  
?>

моя база данных выглядит так

enter image description here

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

MySQL-запросы могут быть хорошим выбором, но вы можете попробовать это как решение PHP.

$arr = [
    [5,5,5,3,1],
    [6,4,2,3,5],
    [4,3,42,6,3]
];


var_dump(array_sum(array_column($arr, 0)));
var_dump(array_sum(array_column($arr, 1)));
var_dump(array_sum(array_column($arr, 2)));
var_dump(array_sum(array_column($arr, 3)));
var_dump(array_sum(array_column($arr, 4)));
int(15) int(12) int(49) int(12) int(9) 
0 голосов
/ 26 февраля 2019

Для массива значений, разделенных запятыми, таким образом вы вычисляете сумму каждого квази-столбца в отдельности .

$pur_amount = [
    "6250,2500,26000,12500,9000",
    "6250,2500,26000,12500,9000",
    "6250,2500,26000,12500,9000",
    "6250,2500,26000,12500,9000",
];

$pur_sum = [];
foreach($pur_amount as $string){
    foreach(explode(",", $string) as $id => $val){
        if(!array_key_exists($id, $pur_sum)){
            $pur_sum[$id] = 0;
        }
        $pur_sum[$id] += $val;
    }
}

var_dump($pur_sum);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...