2016-03-29 27 views
-2

我已經很多年沒有編碼,並已決定製作我自己的高爾夫統計程序。通過PHP循環數組,如果key1添加運算符到變量

我遇到了一個問題,通過數組並獲取我想要的數據。我猜這很簡單,但我非常生疏,並試圖讓自己瞭解這一點。感謝任何幫助。

對於下面的代碼,我想$ dismade是8現在返回4?

<?php 

$score = array(
    "4" => "4", 
    "3" => "4", 
    "4" => "4" 
); 

$dismade = 0; 

foreach ($score as $stroke => $dis) { 
    if($stroke == 4) { 
     $dismade = $dis + $dismade; 
    } 
} 
echo $dismade; 

?> 

更新!

表現很好。謝謝。現在我有另一個問題,我需要這樣做18次。我嘗試着像下面那樣沒有運氣。我想要做的是檢查foreach數組1-18。他們將全部與9個鍵相同。我在想這個問題嗎?下面只獲得第一個位置。例如$ row [fp1]將始終是關鍵字2,但可以有很多值,我希望通過它並將其添加到$ gir,然後移動到fp2等等,直到18,並添加到$ gir數組中。我希望我的問題有道理。

$hole1 = array(); 
    $hole2 = array(); 
    $result = mysql_query($sql) or die ("Couldn't select table at!!"); 
    while ($row = mysql_fetch_array($result)) { 

    $hole1[$row[rid]] = array($row[s1],$row[p1],$row[gir1],$row[ngir1],$row[fp1],$row[fw1],$row[ud1],$row[ss1],$row[pen1]); 
    $hole2[$row[rid]] = array($row[s2],$row[p2],$row[gir2],$row[ngir2],$row[fp2],$row[fw2],$row[ud2],$row[ss2],$row[pen2]); 

    } 
    mysql_free_result($result); 
    $gir = array(); 

    foreach (array_combine($hole1,$hole2) as $value) { 
     if($value[2] == 1) { 
      array_push($gir,$value[4]); 
      } 
     } 

    print_r ($gir); 
+0

第二次輸入密鑰時,您正在覆蓋密鑰'4'。你的意圖是什麼? –

+0

毫不掩飾地重覆它。順便說一下,誰從來沒有任何理由的投票。 – zyexal

回答

1

因爲你有你的數組中的重複鍵「4」,因爲每一個關鍵是在

陣列唯一的,這樣的三線「4」 =>「4」會覆蓋陣列中的第一行。

2

您的$score鍵存在問題。正如你可以看到你有一個重複密鑰"4"

試着這麼做:

$score = array([4,4], [3,4], [4,4]); 
$dismade = 0; 
foreach ($score as $value) { 
    if($value[0] == 4) { 
    $dismade += $value[1]; 
    } 
} 
echo $dismade; 

有一個愉快的一天。

+0

感謝您的快速幫助。它很好地工作。你是否會對此有不同的看法? –

+0

這取決於上下文 - 不知道任何關於高爾夫球^^。沒關係,我猜 – zyexal

+0

因爲即時通訊新我不能投票,但感謝您的答覆和幫助! –