【发布时间】:2010-03-23 23:20:02
【问题描述】:
说明
我有一个多维数组,它被迭代以创建具有不同研究兴趣的人的分类视图。主数组看起来像这样:
Array
(
...
['Cell Biology'] => Array(4 elements)
['Molecular'] => Array(6 elements)
['Biology Education'] => Array(14 elements)
['Plant Biology'] => Array(19 elements) <--- Last element in array
)
我知道整个数组完好无损且结构正确。这些数组中的唯一信息是用户 ID,如下所示:
Array ('Plant Biology') 19 elements
(
[0] => 737
[1] => 742
[2] => 748
...
)
我的问题是,在我通过 foreach 循环运行主数组后,最后一个“子数组”被搞砸了。我所说的搞砸了,我的意思是你看到的东西看起来像:
String (13 characters) 'Plant Biology'
这对损坏的数组在循环内根本没有做任何事情。
有什么提示吗?
PHP 代码
// ---> Array is OK here
echo "<h2>Research divided</h2>";
// Loop areas and list them in 2 columns
foreach($research['areas'] as $area => $areaArray) {
// ---> Here it is already corrupted
$count = count($areaArray);
if($count > 0) {
echo "<h3>$area</h3><hr/>";
echo "<ul>";
// Loop users within areas, divided up in 2 columns
for($i=0 ; $i<$count ; $i++) {
$uid = $areaArray[$i];
echo "<li>$uid</li>";
}
echo "</ul>";
}
}
【问题讨论】:
-
似乎数组中的某些东西在弄乱之前。打算试试
for-loop 而不是foreach-loop -
$area 或 $areaArray 是否在脚本中其他地方的不同函数中使用?如果将它们重命名为 $loop_area 和 $loop_areaArray 会发生什么?
-
您能否提供可以实际重现您的问题的代码?就像创建
$research['areas']数组所必需的一样。 -
旁注:您想在
tr标签内使用td元素而不是li元素。 :) -
我认为它可能在 $research['area'];,您可能是指 $research。除非 $research 有一个带有 area 名称的 array() ,那么你没有一个要循环的数组...为什么不尝试 is_array() 来检查数组是否是一个数组,然后循环显示错误代码。
标签: php arrays multidimensional-array