PHP - While döngüsü

4 Cevap php
print "<ul>";
foreach ($arr as $value) {
    echo("<li>" . $value[storeid] . " " . ($value[dvdstock] + $value[vhsstock]) . "</li>");
}
print "</ul>";

Çıktısı

•2 20
•2 10
•1 20
•1 20
•1 10

Ben her & değeri için toplam değerleri [StoreID] çıktılar yüzden ben bu döngüyü adapte olacağını merak ediyorum

•1 50
•2 30

Çok teşekkürler :)

4 Cevap

İstediğiniz değerlerini hesaplamak için başka bir dizi kullanın:

// setup a quick place to store the data
$stores = array();
foreach ($arr as $value) {
  $stores[$value['storeid']] += $value['dvdstock'] + $value['vhsstock'];
}
print "<ul>";
// loop through the new data
foreach ($stores as $id => $value) {
    echo("<li>" . $id . " " . ($value) . "</li>");
}
print "</ul>";

Bir SQL veritabanından veri alıyorsanız o daha verimli olduğu gibi, o zaman SQL bu kullanarak SUM () işlevleri yapmalıdır. Veri kaynağı başka bir yerden ise böyle bir şey yapmanız gerekir:

//Sum data
foreach ($arr as $value) {
$sums[{$value[storeid]}] += ($value[dvdstock] + $value[vhsstock]);
}

print "<ul>";
foreach ($sums as $key => $sum) {
    echo("<li>$key $sum</li>");
}
print "</ul>";

Bir for döngü olduğunu ve bunlardan iki yapmak zorunda. İlk toplamını hesaplamak ve sonra da bu değerleri üzerinde yineleme için:

$data = array();

foreach ($arr as $value) {
    $data[$value['storeid']] += $value['dvdstock'] + $value['vhsstock'];
}


print "<ul>";
foreach ($data as $storeid => $sum) {
    echo('<li>' . $storeid . ' ' . ($sum) . '</li>');
}
print "</ul>";

Btw one word about strings:
Either use single quotes ' with concatenation .: 'foo: ' . $bar.
Or double quotes " and put the variables inside the string: "foo: $bar".

Doğru sürümü:

<?php

$initial = array (
    array (
        'id'     => 1,
        'amount' => 10
    ),
    array (
        'id'     => 1,
        'amount' => 10
    ),
    array (
        'id'     => 2,
        'amount' => 20
    ),
    array (
        'id'     => 2,
        'amount' => 20
    ),
    array (
        'id'     => 2,
        'amount' => 20
    ),
);

$result = array ();

foreach ($initial as $value) {
    $result[$value['id']] += $value['amount'];
}

print_r($result);

?>