繁体   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