簡體   English   中英

PHP:多維數組插入毛刺

[英]PHP: Multi-Dimensional Array Insert Glitch

所以我試圖創建一個多維數組,其中包含每個團隊的開發人員的memberID。

澄清一下,它應該是這樣的:

$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。 所以我從一秒鍾前將這個額外的代碼添加到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) } } 

希望我把一切都搞清楚了。

假設你的while循環每次獲取行/結果,你得到$developerID和相應的$teamID解決方案就是這樣的,

沒有必要創建三個單獨的數組或foreach循環,一個簡單的while循環就可以了。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM