我在类中使用了一个键值对,但它并没有按我想要的方式返回数据。我想要GB值(&A);Lv在关键区域,价值在价值区域。然而,我的调试输出似乎表明我当前正在将值放置在键值对的键部分?
class Player{ var $PlayerName ; var $TotalContributedPoints; function GetTotalContributedPoints() { $mysqli = new mysqli("localhost", "user", "password", "foe_gb_contribs_test"); if ($mysqli->connect_errno) { echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; } $debug = true; if ($debug == true) {echo $this->PlayerName.'<br>';} $QuerySQL = "SELECT * FROM `GB_Contribs` WHERE Player_Nick = '".$this->PlayerName."' order by DATE ASC"; if ($debug == true) {echo 'Query is '.$QuerySQL.'<br>';} $ContribArray = array("Key" => "Value"); $result = $mysqli->query($QuerySQL); if ($result->num_rows > 0) { while($row=$result->fetch_assoc()) { $ContribArray[$row['GB&Lv']] = $row['Value']; } foreach($ContribArray as $key => $value) { echo "Player_nick: ". $this->PlayerName ."<br>"; echo "Great Building Level: ".$ContribArray[$key]."<br>"; echo "Contribution Points".$ContribArray[$value]."<br>"; } return $ContribArray; } else { if ($debug == true) {echo "0 results";} return; } } }// END of Player Class
在使用foreach迭代数组时,您已经拥有了键和值。您不需要再次引用数组。
foreach($ContribArray as $key => $value) { echo "Player_nick: ". $this->PlayerName ."<br>"; echo "Great Building Level: ".$key."<br>"; // not $ContribArray[$key] echo "Contribution Points".$value."<br>"; // not $ContribArray[$value] }
事实上, $ContribArray[$key] $ContribArray[$value] 你什么都得不到。事实上,它似乎可能会引起未定义索引通知。
$ContribArray[$key]
$ContribArray[$value]