如何在PHP中访问2D数组字段


How to access 2D array fields in PHP

-----问题已解决,请参阅下面的更新2----我将所有MySQL查询结果放入一个2D数组:

$suppDescription=mysql_query($query);
$rows = mysql_num_rows($results);
$allSupplierInfo=array();
for($i=0; $i<$rows; $i++){
    $allSupplierInfo[]=mysql_fetch_row($suppDescription);
}

但现在我无法访问$allSuppliersInfo字段。

 echo $allSupplierInfo[1][1]; // prints out 'Array'
 echo $allSupplierInfo[1]['id'];  //prints out nothing

我做错了什么?

-------更新-----

print_r($allSupplierInfo)打印以下内容,因此看起来循环没有按我希望的方式工作:

Array (
    [0] => Array ( [0] => Array ( [0] =>ID_A[1] => name_A [2] => Address_A[3] => Link_A ) ) 
    [1] => Array ( [0] => Array ( [0] =>ID_A[1] => name_A [2] => Address_A[3] => Link_A ) [1] => Array ( [0] =>ID_B[1] => Name_B [2] => Address_B [3] => Link_B ) ) 
    [2] => Array ( [0] => Array ( [0] =>ID_A[1] => name_A [2] => Address_A[3] => Link_A ) [1] => Array ( [0] =>ID_B[1] => Name_B [2] => Address_B [3] => Link_B ) [2] => Array ( [0] =>ID_C[1] => Name_C [2] => Address_C [3] => Link_C ) ) 
    [3] => Array ( [0] => Array ( [0] =>ID_A[1] => name_A [2] => Address_A[3] => Link_A ) [1] => Array ( [0] =>ID_B[1] => Name_B [2] => Address_B [3] => Link_B ) [2] => Array ( [0] =>ID_C[1] => Name_C [2] => Address_C [3] => Link_C ) [3] => Array ( [0] =>ID_D[1] => Name_D [2] => Address_D [3] => Link_D ) ) 
    [4] => Array ( [0] => Array ( [0] =>ID_A[1] => name_A [2] => Address_A[3] => Link_A ) [1] => Array ( [0] =>ID_B[1] => Name_B [2] => Address_B [3] => Link_B ) [2] => Array ( [0] =>ID_C[1] => Name_C [2] => Address_C [3] => Link_C ) [3] => Array ( [0] =>ID_D[1] => Name_D [2] =>     Address_D [3] => Link_D ) [4] => Array ( [0] =>ID_E[1] => Name_E [2] => Address_E [3] => Address_E ) ) ) 

------更新2-----RiggsFilly建议使用while循环,解决了这个问题,我可以按照最初的意愿访问字段。我仍然不明白为什么我使用的for循环没有像我想象的那样循环——任何解释都将不胜感激。

我想您对mysql结果处理感到困惑,在检查返回的行数时使用了$result,但应该是$suppDescription

这意味着您的for循环将不会运行,因为您将获得0或可能的FALSE作为对mysql_num_rows($suppDescription); 的响应

$suppDescription=mysql_query($query);
$rows = mysql_num_rows($suppDescription);
$allSupplierInfo=array();
for($i=0; $i<$rows; $i++){
    $allSupplierInfo[]=mysql_fetch_row($suppDescription);
}

同样,使用while loop更容易做到这一点,然后您只需处理返回的任何内容,而不需要麻烦地获取行数。

$suppDescription=mysql_query($query);
$allSupplierInfo=array();
while ( $rows = mysql_fetch_row($suppDescription) ) {
    $allSupplierInfo[]=mysql_fetch_row($suppDescription);
}