PHP:多维数组插入毛刺

时间:2016-09-10 10:44:59

标签: php arrays

所以我正在尝试创建一个多维数组,其中包含每个团队的开发人员的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;
    }
}

在这一点上,我的阵列完全延迟了。

完成一步一步的输出:

再次澄清一下,代码会获取登录用户所在的所有团队,如#teambe数组'所示。 之后,它会获得团队中指定为开发人员的成员。 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) } } 

希望我把事情弄清楚。

1 个答案:

答案 0 :(得分:0)

假设对于while循环中每个获取的行/结果,您获得了$developerID和相应的$teamID解决方案会是这样的,

没有必要创建三个单独的数组或foreach循环,一个简单的while循环就可以了。

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

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