2012-06-06 93 views
0

處理此數組時,每次引用該數組時都會給出通知,直到將某個數組添加到該數組中爲止。所有的輸出按預期工作。處理空維度的多維數組

的通知截圖: http://imgur.com/75RGA

function create_round(&$arrTeam) 
{ 
    $numTeams = 4; 

    $used = array(); 

    for ($i = 0; $i < $numTeams; $i++) { 
     if (!in_array($i, $used)) { //if i isnt already scheduled to play 
      for ($u = $numTeams-1; $u > $i; $u--) { 
       if (!in_array($u, $used) && !in_array($u, $arrTeam[$i]["games"])) { //if u isnt already scheduled to play and u hasnt been played by i before 
        $arrTeam[$i]["games"][sizeof($arrTeam[$i]["games"])] = $u; 
        $arrTeam[$u]["games"][sizeof($arrTeam[$u]["games"])] = $i; 

        $used[sizeof($used)] = $i; 
        $used[sizeof($used)] = $u; 

        echo($arrTeam[$i]["name"] . " VS " . $arrTeam[$u]["name"] . "<br>"); 
        break; 
       } 
      } 
     } 
    } 

    var_dump($arrTeam); 
} 

function round_robin() 
{ 
    $numTeams = 4; 

    //Create array 
    $arrTeam = array(
     $team = array(
      "name" => "", 
      "games" => array() 
     ) 
    ); 

    //TEMP ASSIGNING NAMES 
    for ($i = 1; $i < $numTeams+1; $i++) 
     $arrTeam[$i-1]["name"] = "Team $i"; 

    //Echo Round numbers 
    for ($i = 1; $i < $numTeams; $i++) { 
     echo("<br>Round $i<br>"); 
     create_round($arrTeam); 
    } 
} 

round_robin(); 

應通知只是被禁用或有應付的更好的方法嗎?

我試圖填充它,但代碼結束了兩倍長,非常混亂。

+0

沒有需要'sizeof'聲明。你可以像下面這樣向數組添加元素:'$ arrTeam [$ i] [「games」] [] = $ u' and'$ used [] = $ i;' –

+0

哦,哇,真酷!謝謝 – user1439737

回答

0

你正在檢查這一個所有的地方:

$arrTeam[$i]["games"] 

沒有測試它的存在。 更改爲:

if (isset($arrTeam[$i]["games"]) && ..more checking..) { ..do stuff.. } 

,或者您可以禁用通知:

error_reporting(E_ALL^E_NOTICE); 

編輯:

在ROUND_ROBIN做一次()函數:

代替:

$numTeams = 4; 

//Create array 
$arrTeam = array(
    $team = array(
     "name" => "", 
     "games" => array() 
    ) 
); 

做:

$numTeams = 4; 
for($x=0;$x<$numTeams;$x++) { 
    $arrTeam[$x] = array("name"=>"","games"=>array()); 
} 
+0

美麗!雖然我不太明白爲什麼會給出不同的結果? – user1439737

+0

這是一個修復,只是爲了擺脫通知,因爲未定義的嵌套數組;你沒有得到正確的結果嗎? – 2012-06-06 14:22:47

+0

它工作得很好我只是想知道爲什麼它可以工作,當我閱讀代碼時,它看起來像是做同樣的事情,除了可能更明確地定義數組。 – user1439737