Сумиране на масив.

sentenello

Registered
Здравейте,
Интересува ме как да сметна и подредя дадено поле.
Ето каво точно имам в предвид.

Код:
$raz = explode(':',$roww[result]); 
$domakinresult = $raz[0]; 
$gostresult = $raz[1];
$allhG +=$domakinresult;
$allaG +=$gostresult;

$allhG ми смятам общия сбор на домакинските голове. Как мога да направя така, че да преброя в колко случая $allhG е по-голямо от $allaG.

Както виждате двете стойност се записват в едно поле в БД, а тук в цикъла ги деля.

Другото което искам да попитам е... Как мога да избера най-често срещаните резултати от БД, като ги изведа.
Примерно имам резултати.
1:0
0:1
0:1
2:0
0:2
2:1

и заявката да ми извежда
1:0
2:0
2:1
 
Ами предполагам, че това ти е в цикъл някакъв:
Код:
$raz = explode(':',$roww[result]);
$domakinresult = $raz[0];
$gostresult = $raz[1];
$allhG +=$domakinresult;
$allaG +=$gostresult;

ако правилно съм разбрал, сетваш една променлива примерно
Код:
$x=0;
преди цикъла и след това на края на цикъла (точно след като пресметнеш allhG и allaG , правиш така:
Код:
if ($allhG > $allaG) $x++;
и така, след като се извърти цикъла, ще имаш колко пъти $allhG е било по-голямо от $allaG (в променливата $x).
Това е до колкото успях да разбера въпроса ти.
А за втория въпрос.. нещо не ми се връзва.. имаш 1:0 - един път, 2:0 - един път и 2:1 също един път, а 0:1 - два пъти.. защо трябва да ти върне тези резултати които казваш, а не 0:1 ? Каква е логиката?
 
Логиката е общия сбор на головете.
Не ме интересува, че че госта е победил или пък домакина. Важно е да се знае с какъв резултат е станало това ;)

П.С. Сега ще пробвам това което си ми казал за първия ми въпрос
 
ако правилно съм разбрал, сетваш една променлива примерно

$x=0;

преди цикъла и след това на края на цикъла (точно след като пресметнеш allhG и allaG , правиш така:


if ($allhG > $allaG) $x++;

Това работи перфектно ;)
Ако можеш да ми кажеш как да направя и това за резултатите :idea: :?:
 
За array_sum(); да си чувал ?

В цикъла правиш така

Код:
$diff = explode(":", $roww['result']);
$results['domakin'][] = $diff[0];
$results['guest'][] = $diff[1];

Извън цикъла смяташ

Код:
$total_dom = array_sum($results['domakin']);
$total_guest = array_sum($result['guest']);
 
relax15pyt каза:
За array_sum(); да си чувал ?

В цикъла правиш така

Код:
$diff = explode(":", $roww['result']);
$results['domakin'][] = $diff[0];
$results['guest'][] = $diff[1];

Извън цикъла смяташ

Код:
$total_dom = array_sum($results['domakin']);
$total_guest = array_sum($result['guest']);

Чувал съм, дори в един друг файл видях, че така съм си сумирал един масив, но и по начина на chalgoman стана.
Ако ми кажете как ще стане другото което питам, защото просто ми се вижда невъзможно колкото и да го мисля
 
В базата данни имам записани примерно :
Код:
1:0
0:1
1:0
2:0
3:1
2:1
2:0
Искам да направя заявка която да групира резултатите и да ги извежда подредени по най-често срещани. Да няма значение обаче дали резултата е 0:1 или 1:0.
От кода по-горе трябва да излезе
Код:
1:0
2:0
2:1
3:1
 
Не знам дали е това, което искаш, но все пак:
Код:
$results = array('1:0', '0:1', '1:0', '2:0', '3:1', '2:1', '2:0'); // на мястото на тези трябва да вкараш резултатите от базата данни

$results_new = array();
foreach ($results as $res)
{
    if (isset($results_new[$res]))
    {
        $results_new[$res]++;
        continue;
    }
    
    if (isset($results_new[strrev($res)]))
    {
        $results_new[strrev($res)]++;
        continue;
    }
    
    $results_new[$res] = 1;
}
arsort($results_new);
$out_results = array_keys($results_new);

// $out_results е новият масив с резултатите :)
print_r($out_results);
 
От твоя код ми извежда
Код:
Array ( [0] => 1:0 [1] => 2:0 [2] => 2:1 [3] => 3:1 )

Би ли ми казал как да направя заявката за да вкарам резултатите в Array(), и после как да ги изведа както съм показал по-горе?
 
sentenello каза:
От твоя код ми извежда
Код:
Array ( [0] => 1:0 [1] => 2:0 [2] => 2:1 [3] => 3:1 )

Би ли ми казал как да направя заявката за да вкарам резултатите в Array(), и после как да ги изведа както съм показал по-горе?
Вич, че е използвал print_r. А как да ги вкараш просто $array = array();
и след mysql_fetch_assoc така
$array[] = $row['rezultat'];
 
slideR каза:
sentenello каза:
От твоя код ми извежда
Код:
Array ( [0] => 1:0 [1] => 2:0 [2] => 2:1 [3] => 3:1 )

Би ли ми казал как да направя заявката за да вкарам резултатите в Array(), и после как да ги изведа както съм показал по-горе?
Вич, че е използвал print_r. А как да ги вкараш просто $array = array();
и след mysql_fetch_assoc така
$array[] = $row['rezultat'];

Извинявам се за тъпия върпос, ама как точно да ги вкарам в масива.

това ми е заявката примерно
Код:
	$sqlstatsa = mysql_query("SELECT result FROM programa where league='$rowka[otbor]' AND division='Премиършип' AND result!='' ");

След това как да вкарам резултатите от $sqlstatsa в аррая ?
 
Последен въпрос в тая тема.
В момента ги извежда така.
Код:
Array ( [0] => 1:0 [1] => 2:1 [2] => 4:0 [3] => 1:1 [4] => 0:0 [5] => 8:0 [6] => 6:0 [7] => 4:2 )

Как да ги изведа само самите резултати, и как мога да разбера кой резултат колко пъти го е имало.
В смисъл искам да стане така.

1:0 - 5 пъти
2:0 3 пъти
 
Написах си този код, за да изкарам резултатите както искам.
Код:
$count = count($out_results);
for ($i = 0; $i < $count; $i++) {
    echo "$out_results[$i],";
$broi = mysql_result(mysql_query("SELECT COUNT(*) FROM programa WHERE result='$out_results[$i]' AND league='$rowka[otbor]' AND division='Премиършип'"),0); 
echo"$broi<BR>";

}

в момента ми извежда,
1:0 ,3
но в бд има 3 пъти 1:0 и 1 път 0:1, иначе ги подрежда правилно.
Не разбрах много кода който ми бе наисан, но изведох $results_new
и там ми показа
Код:
Array ( [1:0] => 4 [2:1] => 3 [4:0] => 3 [1:1] => 2 [0:0] => 2 [8:0] => 1 [6:0] => 1 [4:2] => 1 )
Точно както трябва да ги брой, без значение дали е 0:1 или 1:0.
Какво да направя във заявката, че да ги брой правилно ?
 
С доста мъкисе орпавих, но все пак всичко дойде благодарение на вас.
Благодаря ви!
Най-полезен ми се стори кода на HunteR, затова и на него давам +1
 

Back
Горе