无法正确设置php键值对集

无法正确设置php键值对集,php,object,keyvaluepair,Php,Object,Keyvaluepair,我在一个类中使用了一个键值对,但它并没有以我想要的方式返回数据。我希望GB和Lv中的值位于关键区域,值位于值区域。但是,我的调试输出似乎表明我当前正在将该值放置在键值对的键部分 职业玩家{ var$PlayerName; var$TotalContributedPoints; 函数GetTotalContributedPoints() { $mysqli=新的mysqli(“本地主机”、“用户”、“密码”、“foe_gb_contribs_测试”); 如果($mysqli->connect\u

我在一个类中使用了一个键值对,但它并没有以我想要的方式返回数据。我希望GB和Lv中的值位于关键区域,值位于值区域。但是,我的调试输出似乎表明我当前正在将该值放置在键值对的键部分

职业玩家{
var$PlayerName;
var$TotalContributedPoints;
函数GetTotalContributedPoints()
{
$mysqli=新的mysqli(“本地主机”、“用户”、“密码”、“foe_gb_contribs_测试”);
如果($mysqli->connect\u errno){
echo“未能连接到MySQL:(“$mysqli->connect\u errno.”“$mysqli->connect\u error;
}
$debug=true;
如果($debug==true){echo$this->PlayerName.
;} $QuerySQL=“从'GB_Contribs'中选择*其中Player_Nick=”“$this->PlayerName。”“按日期排序ASC”; 如果($debug==true){echo'查询为'$QuerySQL'.
';} $ContribArray=数组(“键”=>“值”); $result=$mysqli->query($QuerySQL); 如果($result->num_rows>0){ 而($row=$result->fetch_assoc()){ $ContribArray[$row['GB&Lv']]=$row['Value']; } foreach($key=>$value){ echo“Player_nick:”.$this->PlayerName.
”; 呼应“伟大的建筑水平:”.$contribaray[$key]。“
”; 回显“贡献点”。$contribaray[$value]。“
”; } 返回$contribaray; }否则{ 如果($debug==true){echo“0结果”;} 返回; } } }//球员课程结束
当您使用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]
}
foreach($key=>$value){
echo“Player_nick:”.$this->PlayerName.
”; echo“伟大的建筑级别:”.$key.
“;//不是$ContribArray[$key] 回显“贡献点”。$value.
“;//不是$contribaray[$value] }

事实上,
$contribaray[$key]
会为您获取值,我假设
$contribaray[$value]
不会为您获取任何信息。事实上,它看起来可能会导致一个未定义的索引通知。

总体计划是对象是自包含的,并通过该函数传递密钥值。完成后,代码的该部分将位于if($debug==true){}部分。但现在的问题是,回音“伟大的建筑水平:”.$key.“
”;行返回我希望在回显“贡献点”中显示的值。$value。“
”;线路。我想我是说,
$ContribArray
可能很好,但foreach输出只是让它看起来不是这样。@CoderWolf您的代码没有
伟大的建筑级别:“.key.”
行,它有一个
“伟大的建筑级别:”.$ContribArray[$key]。“
行,这是完全不同的。如果你说你尝试了Don't Panic的解决方案,但也没有成功,那么忽略这个。但是,考虑到您的原始代码,不要惊慌的观点是正确的。谢谢,这与我在foreach中的想法略有不同,并解释了我在从foreach中取出$key=>$值时遇到的一个问题。我没有意识到外观本身正在将它分配给它自己的变量。hense我没有意识到这些变量是供我使用的。@PatrickQ谢谢,我试图通过在代码中添加注释来让这一点更加明显——不过可能太微妙了。
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]
}