PHP - 没有得到我期望的数组元素

时间:2011-04-23 08:01:54

标签: php arrays paging

我正在遍历数组的元素。 我得到了数组中元素的总数:

$total = count($myarray);

我的分页功能加载页面上的当前元素,并提供具有以下网址的“上一页”和“下一页”链接:

http://myapp.com?page=34

如果你单击链接我抓住它并通过获取(我清理$ _GET,这只是例如)加载到页面上:

$element = $myarray[$_GET['page']];

这应该使用键== $ _GET ['page']来获取数组元素,并且确实如此。但是,问题是我的元素总数与某些键不匹配,因为虽然数组中有100个元素,但缺少某些数字,因此第100个项实际上有102个键。

我该怎么做?我是否需要重写密钥以匹配可用的元素数量?其他一些方法?感谢您的投入。

3 个答案:

答案 0 :(得分:2)

如果索引中有间隙,则应重新索引数组。您可以在生成链接之前执行此操作,也可以在接收页面上更轻松地执行此操作:

$myarray = array_values($myarray);
$element = $myarray[$_GET['page']];

这将为您提供第100个元素,即使它之前有密钥102.(当然,如果您需要保留原始索引,可以使用临时数组。)

答案 1 :(得分:1)

  

我该怎么做?我需要   重写密钥以匹配   可用的元素数量?一些   其他方法?

不,你不需要担心它们不匹配。 Php数组是associative containers,就像其他语言中的字典一样。如果你定义98和100的东西,99不在内存中,关联容器后面的数据结构只存储什么。你不是在浪费空间而不是“填补”数量。

所以你描述的做法很好。如果没有页面“99”,则无需在阵列中显示任何内容。但是,看到您的数组没有“page”参数的任何内容并显示错误消息可能会很好。

  

但是为什么,当我访问$ total =时   算($ myarray的); $ myArray的[$总]   其中$ total = 100我没有得到   最后一个元素我可以把页面= 101和   得到一个记录。我不应该   能够做到这一点

因为count正在计算数组中有多少东西。如果你有一个只填充偶数元素的数组,即:

 $myArray[0] = "This";
 $myArray[2] = "is";
 $myArray[4] = "even";

此处count($ myArray)为3. [1]或[3]中没有任何内容。当你把数字排除在等式之外时,这可能更容易看出来。数组可以有字符串索引

 $myArray = array();
 $myArray["Hello"] = "A Bunch of";
 $myArray["World"] = "words";

此处count($ myArray)为2.

在第一种情况下,访问$ myArray [3]是没有意义的,因为没有任何东西。显然,在第二个例子中,2处没有任何内容。

答案 2 :(得分:1)

你可以使用

$array = array_values($array);