2016-09-10 23 views
1

チームごとに開発者のmemberIDを保持する多次元配列を作成しようとしています。明確にするためにPHP:多次元配列の挿入グリッチ

、それはこのように見えることになっている:

$MultiDimensionalArray = array (
    $teamArray[$teamID] = array (
     [0] => '$memberID', 
     [1] => '$memberID' 
    ), 
    $teamArray[$teamID] = array (
     [0] => '$memberID', 
     [1] => '$memberID' 
    ) 
) 

問題があるが、MEMBERID年代を挿入するとき、何かがうまくいかないということです。

これは私が使用するコードの最初の部分です。

$teamIDarray = []; 
$developersMultiArray = []; 
$developersTeamIDArray = []; 

while($preparedStatement->fetch()) { 
    $teamIDarray[] = $teamID; 
} 

foreach($teamIDarray as $teamID) { 
    $developersMultiArray[$teamID] = $developersTeamIDArray; 
} 

アレイの出力は、(キーがteamIDのある)今ある:

developersMulti array(5) { [175]=> array(0) { } [176]=> array(0) { } [177]=> array(0) { } [178]=> array(0) { } [179]=> array(0) { } } 

グレートこれまでのところ、今私はteamID配列内の開発者のMEMBERID年代を追加したいです。だから私はこの余分なコードをちょうど1秒前からforeachループに追加します。作成:

foreach($teamIDarray as $teamID) { 
    $developersMultiArray[$teamID] = $developersTeamIDArray; 

    while($preparedStatement->fetch()) { 
     $developersTeamIDArray[] = $developerID; 
    } 
} 

私の配列は完全に遅くなります。ステップの出力によって

完全ステップ:

が再び明確にするためには、コードが「teamIDアレイ」に見られるようの一部であるユーザでログインしているすべてのチームを取得します。 その後、チームの開発者として指定されたメンバーを取得します。 175と176はチームに開発者がいないため、配列には含まれません。

teamID array(5) { [0]=> int(175) [1]=> int(176) [2]=> int(177) [3]=> int(178) [4]=> int(179) } 

teamID: 177 
memberID: 9 
//should add memberID 9 to array with 177 as key, but doesn't for some reason. 
developersMulti array(3) { [175]=> array(0) { } [176]=> array(0) { } [177]=> array(0) { } } 

teamID: 178 
memberID: 9 
//for some reason, this goes correct 
developersMulti array(4) { [175]=> array(0) { } [176]=> array(0) { } [177]=> array(0) { } [178]=> array(1) { [0]=> int(9) } } 

teamID: 178 
memberID: 10 
//didn't add memberID 10 to team 178 
developersMulti array(4) { [175]=> array(0) { } [176]=> array(0) { } [177]=> array(0) { } [178]=> array(1) { [0]=> int(9) } } 

teamID: 179 
memberID: 9 
//adds two unknown user, probably user 9 and 10 that got skipped in the previous iterations 
developersMulti array(5) { [175]=> array(0) { } [176]=> array(0) { } [177]=> array(0) { } [178]=> array(1) { [0]=> int(9) } [179]=> array(3) { [0]=> int(9) [1]=> int(9) [2]=> int(10) } } 

teamID: 179 
memberID: 10 
//got skipped again 
developersMulti array(5) { [175]=> array(0) { } [176]=> array(0) { } [177]=> array(0) { } [178]=> array(1) { [0]=> int(9) } [179]=> array(3) { [0]=> int(9) [1]=> int(9) [2]=> int(10) } } 

teamID: 179 
memberID: 11 
//skipped again 
developersMulti array(5) { [175]=> array(0) { } [176]=> array(0) { } [177]=> array(0) { } [178]=> array(1) { [0]=> int(9) } [179]=> array(3) { [0]=> int(9) [1]=> int(9) [2]=> int(10) } } 

私はすべてを明確にしました。別の3を作成する必要はありません、あなたは$developerIDと対応$teamID次のようになりますソリューションを取得している、

をそれぞれ取得した行に/あなたのwhileループに起因していることを想定し

答えて

0

配列またはforeachループ、単純なwhileループはうまくいくでしょう。

$developersMultiArray = []; 
while($preparedStatement->fetch()){ 
    // $developerID corresponds to a particular $teamID 
    $developersMultiArray[$teamID][] = $developerID; 
} 

// display $developersMultiArray array 
var_dump($developersMultiArray); 
+0

ああwaww ...そのトリックをしました。どうもありがとうございます!私は$ array [key] [] = 'addvalue'を見たことがありません。これは何と呼ばれていますか? –

+0

@ B.Cakirこれは、 '$ array [key]'配列に*値を追加する多次元配列演算です。詳細はこちら[http://php.net/manual/en/language.types.array.php](http://php.net/manual/en/language.types.array.php)]を参照してください。 ) –