Php 三维阵列

Php 三维阵列,php,multidimensional-array,Php,Multidimensional Array,我正试图用以下代码构建一个三维数组: while ($Inf = $queryPrep->fetch(PDO::FETCH_OBJ)) { $cie_Names = array( $Inf->dp_id=>array( 'name'=> $Inf->dp_desc, 'enabled'=>$Inf->dp_enabled)); } 不幸的是,这段代码只返回了最后一条记录,所以我查了一下: $cie_Names = array

我正试图用以下代码构建一个三维数组:

while ($Inf = $queryPrep->fetch(PDO::FETCH_OBJ)) {
 $cie_Names = array(
    $Inf->dp_id=>array(
    'name'=> $Inf->dp_desc, 
    'enabled'=>$Inf->dp_enabled));
}
不幸的是,这段代码只返回了最后一条记录,所以我查了一下:

$cie_Names = array();
while ($Inf = $queryPrep->fetch(PDO::FETCH_OBJ)) {
     $cie_Names = [$Inf->dp_id]=>array(
    'name'=> $Inf->dp_desc, 
       'enabled'=>$Inf->dp_enabled);
}
但现在我犯了一个错误

稍后我需要以这种方式调用我的阵列:

foreach ($depts as $ID => $DeptDetail) {
   $optlist .= '<option value=' . $ID . '>' . $DeptDetail['name'] . $DeptDetail['enabled'] . '</option>';
}
foreach($ID=>$DeptDetail){
$optlist.=''.$DeptDetail['name'].$DeptDetail['enabled'].';
}

通过分配给
arrayName[]
将新元素添加到数组中:

while ($Inf = $queryPrep->fetch(PDO::FETCH_OBJ)) {
    $cie_Names[] = array(
        $Inf->dp_id=>array(
            'name'=> $Inf->dp_desc, 
            'enabled'=>$Inf->dp_enabled
        )
    );
}
然而,这似乎是一个糟糕的数组布局——
cie_Names
数组的每个元素都是一个具有不同键的关联数组;访问它们将很困难,因为您不知道键如何映射到数组索引,您必须执行循环才能找到任何内容。可能更有用的是:

while ($Inf = $queryPrep->fetch(PDO::FETCH_OBJ)) {
    $cie_Names[$Inf->dp_id] = array(
        'name'=> $Inf->dp_desc, 
        'enabled'=>$Inf->dp_enabled
    );
}

然后,
cie\u Names
数组的键将由
dp\u id
值决定。

谢谢,它可以工作,我更改为:$cie\u Names[$Inf->dp\u id]=array('name'=>Inf->dp\u desc,'enabled'=>Inf->dp\u enabled);//通过在[]中添加“ID”,它解决了我的问题!