私は非公式のOverwatch APIに接続し、そのプレーヤーの情報を取得してデータベースに保存するアプリケーションを用意しています。私はどのように情報を得て、それが別の場所でも問題ではないことを確認しています。PHP - パラメータ配列内の未定義インデックス
私はそうのようなアレイ内部ヒーローの各々を有する開始:
$heroArray = array(
"zenyatta" => "0",
"mei" => "0",
"tracer" => "0",
"soldier76" => "0",
"anaamari" => "0",
"roadhog" => "0",
"reinhardt" => "0",
"torbjorn" => "0",
"mccree" => "0",
"junkrat" => "0",
"dva" => "0",
"winston" => "0",
"hanzo" => "0",
"widowmaker" => "0",
"reaper" => "0", //this hero is causing problems later
"pharah" => "0", //this hero is causing problems later
"symmetra" => "0", //this hero is causing problems later
"genji" => "0",
"lucio" => "0",
"bastion" => "0",
"mercy" => "0",
"zarya" => "0",
"sombra" => "0"
);
充填される値は、プレイヤーがこの主人公で果たしてきた時間の量になるように値がゼロに設定されています。その後、ヒーローがループして、APIが返すJSONファイルからの情報を取得します。
foreach($heroArray as $key => $value){
$value = floatval($json[$region]['heroes']['stats']['quickplay'][$key]['general_stats']['time_played']);
}
次に、配列とその他の値がalterPlayer関数に渡されます。次のようにSQLコードは次のとおりです。
$sqlQuery= "UPDATE player SET timeplayed = :timeplayed, prestige = :prestige , level = :level, avatar = :avatar, wins = :wins, Zenyatta = :zenyatta, Mei = :mei, Tracer = :tracer, Soldier76 = :soldier76, Anaamari = :anaamari, Roadhog = :roadhog, Reinhardt = :reinhardt, Torbjorn = :torbjorn, Mccree = :mccree, Junkrat = :junkrat, Dva = :dva, Winston = :winston, Hanzo = :hanzo, Widowmaker = :widowmaker, Reaper = :reaper, Pharah = :pharah, Symmetra = :symmetra, Genji = :genji, Lucio = :lucio, Bastion = :bastion, Mercy = :mercy, Zarya = :zarya, Sombra = :sombra, TopHero :heroTopName, SecondHero = :heroSecondName, ThirdHero = :heroThirdName, TopHeroElim = :heroTopElim, TopHeroDeath = :heroTopDeath, SecondHeroElim = :heroSecondElim, SecondHeroDeath = :heroSecondDeath, ThirdHeroElim = :heroThirdElim, ThirdHeroDeath = :heroThirdDeath WHERE Battletag = :battletag";
そして値はparams配列(私はここに部屋を保存するために一部の値を削除した)に割り当てられています。私はこの中を実行すると
$params = array(
"junkrat" => $heroArray['junkrat'],
"dva" => $heroArray['dva'],
"winston" => $heroArray['winston'],
"hanzo" => $heroArray['hanzo'],
"widowmaker" => $heroArray['widowmaker'],
"reaper" => $heroArray['reaper'], //problem
"pharah" => $heroArray['pharah'], //problem
"symmetra" => $heroArray['symmetra'], //problem
"genji" => $heroArray['genji'],
"lucio" => $heroArray['lucio'],
"bastion" => $heroArray['bastion'],
"mercy" => $heroArray['mercy']
);
コマンドライン私は次のエラーが表示されます:
C:\Windows\system32>C:/xampp\php\php.exe C:\xampp\htdocs\overwatch\alterPlayer.php
NULL
Notice: Undefined index: reaper in C:\xampp\htdocs\overwatch\PlayerTableGateway.php on line 123
Notice: Undefined index: pharah in C:\xampp\htdocs\overwatch\PlayerTableGateway.php on line 124
Notice: Undefined index: symmetra in C:\xampp\htdocs\overwatch\PlayerTableGateway.php on line 125
Could not update player
したがって、問題を引き起こしているヒーローは、刈り取る人、pharahと対称です。もし誰かがエラーを見つけられたら、それは非常に感謝されるでしょう!あなたのforeachで
データベースが乱雑です。新しいヒーローをゲームに加えるとどうなるでしょうか?追加の列を作成する必要があります。何かをしなさい。 – Phiter
これは学問的なプロジェクトです。超過ウォッチがこれ以上ヒーローを追加しない場合、私は自分のアプリケーションに追加しません。 – Marzipan
私は参照してください。しかし、マイナーなプロジェクトでさえ、最良のアプローチを使用することは良いことです。 – Phiter