无法正确设置php键值对

时间:2017-10-03 19:55:45

标签: php object keyvaluepair

我有一个我在类中使用的键值对,但它没有按照我想要的方式返回数据。我希望GB& 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

1 个答案:

答案 0 :(得分:1)

当您使用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]不会得到任何东西。实际上,它似乎可能会导致未定义的索引通知。