2012-02-10 67 views
1

我有一個函數:多維數組。我究竟做錯了什麼?

function getDecision($num_players, $decisionType, $stage){ 

echo "in the function 1: ".$num_players."<br/>"; 
echo "in the function 2: ".$decisionType."<br/>"; 
echo "in the function 3: ".$stage."<br/>"; 

$x = mysql_query(" 

    SELECT `decisionValue` FROM `teamdecision` WHERE `decisionType` = '$decisionType' && `period`= '$stage' 

    ")or die($x."<br/><br/>".mysql_error()); 

      $y = array(); 
      $i="0"; 
      while ($i<($num_players) && $row = mysql_fetch_assoc($x)) 
      { 

      $y[$i] = $row['decisionValue']; 
      $i++; 

      } 

      return ($y); 
} 

Ÿ將與數取決於$num_players值來填充。我打電話的功能如下:

$value = array(); 
$name = array(); 

for ($j=0;$j<$num_players;$j++){ 
for ($i=0;$i<4;$i++){ 
$name[0] = "SUconsultant"; 
$name[1] = "marketT"; 
$name[2] = "sector"; 
$name[3] = "saleprice"; 

echo $name[$i]."<br/>"; 

$value[$i] = getDecision($num_players, $name[$i], $currentStage)."<br/>"; 

echo "Value = ".$value[$j][$i]."<br/>"; 
} 
} 

正如你所看到的我這樣做是錯誤的。我需要輸出位於$value的數據,但是我很困惑多維數組是如何工作的。我知道我需要閱讀這個主題,如果可能的話,你可以指點我一個合適的學習來源?

因此,我改變了代碼,以便下面被用來產生下面的輸出:

$value = array(); 
$name = array(); 

for ($j=0;$j<$num_players;$j++){ 
for ($i=0;$i<4;$i++){ 
$name[0] = "SUconsultant"; 
$name[1] = "marketT"; 
$name[2] = "sector"; 
$name[3] = "saleprice"; 

echo $name[$i]."<br/>"; 

$value[$i] = getDecision($num_players, $name[$i], $currentStage)."<br/>"; 

echo "Value = ".$value[$j][$i]."<br/>"; 
} 
} 

enter image description here

我期望輸出如下:

$value[0]應包含$ y,然後包含每個SUconsultant值。 $value[1]應包含$ y,然後包含每個marketT值等。

+1

IS' for($ i = 0; $ j <4; $ i ++)''我有'故意嗎?因爲我認爲不是...... – Andrew 2012-02-10 16:18:22

+0

好吧,'$ i =「0」;'將$ i定義爲一個字符串 - 它可以工作,但是首先不需要引號。 – Basic 2012-02-10 16:18:42

+0

對不起,你是對的我修正了兩個評論問題。 – NeverPhased 2012-02-10 16:20:49

回答

1

該解決方案的工作,周圍很多玩它之後似乎[]value陣列也需要?至少我是這麼認爲的

$value = array(); 
$name = array(); 

for ($j=0;$j<$num_players;$j++){ 
for ($i=0;$i<4;$i++){ 
$name[0] = "SUconsultant"; 
$name[1] = "marketT"; 
$name[2] = "sector"; 
$name[3] = "saleprice"; 

echo $name[$i]."<br/>"; 

$value[] = getDecision($num_players, $name[$i], $currentStage); 

//echo "Value = ".$value[$i]."<br/>"; 

echo "<br/><hr/>"; 
echo "Value = ".$value[$i][$j]."<br/><hr/>"; 
} 
} 

輸出:

enter image description here

現在我已更改爲:

$value[] = getDecision($num_players, $name[$i], $currentStage); 

echo "Team ".$j." ".$name[$i]." = ".$value[$i][$j]."<br/>"; 

爲了讓我的最終目標是:

enter image description here

1

您在第一個for循環中有$j,但在其中設置並加上$i。也許可以將它們更改爲$j

編輯

實際上,它看起來像你有你在哪裏返回數據的問題:

echo "Value = ".$value[$j][$i]."<br/>"; 

這應該是(出現):

for ($f = 0; $f < $num_players; $f++){ 
    echo "Value = ".$value[$i][$f]."<br/>"; 
} 

由於你到達這一點時目前在$value[$i],那麼你需要它爲每個玩家迴應一個。

+0

我已經這樣做了,現在看來'$ name'沒有正確傳遞給函數。只有每個字符串的第一個字母。 – NeverPhased 2012-02-10 16:21:39

+1

嘗試在'$ value = array();'的頂部指定'$ name = array();'。 – James 2012-02-10 16:39:00

+0

是的,只是做到了。請參閱上面的編輯。我正在寫它。 – NeverPhased 2012-02-10 16:39:52

1
for ($i=0;$j<4;$i++){ 

應該

for ($j=0;$j<4;$j++){ 

而且

$value[$i] = getDecision($num_players, $name[$i], $currentStage)."<br/>"; 

應該

$value[$j] = getDecision($num_players, $name[$j], $currentStage)."<br/>"; 
+0

改變這沒有什麼不同,似乎字符串沒有正確傳遞給函數。請參閱我上面的編輯。 – NeverPhased 2012-02-10 16:35:19

+0

你確實改變了第一部分,但沒有改變這一行:$ value [$ j] = getDecision($ num_players,$ name [$ j],$ currentStage)「
」; – 2012-02-10 16:41:43

+0

Willem請參閱我的新編輯 – NeverPhased 2012-02-10 16:51:18