【问题标题】:PHP : algorithm to get set of values from array [closed]PHP:从数组中获取一组值的算法[关闭]
【发布时间】:2013-08-29 17:15:24
【问题描述】:

我有一个包含 2500 个元素的数组..我想要简单的算法来获得以下内容。

如果输入是 1 ,那么它应该返回第 50 个元素。 如果输入是 2,它应该返回 51 到第 100 个元素。 如果输入是 3,它应该返回 101 到第 150 个元素。

我对这个算法太困惑了,我的大脑没有给出任何想法,请有人帮助我。

注意:我正在为 2500 url 编写自己的分页..而且我只需要算法思想..而不是编码

【问题讨论】:

  • array_slice($arr,($n-1)*50,50) 可能是一个起点。
  • 你为什么不搜索一个分页教程并了解它是如何完成的?
  • @blo 我做了,所教的教程是基于 sql 的......但是我在文本文件中有 url 列表,我已经转换为数组。
  • @user2728612 你可以从文本文件中计算并选择所需的行数,现在试试谷歌/阅读手册如何做到这一点,快乐编码:)

标签: php arrays algorithm


【解决方案1】:
<?php
    $ar = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30];

    function return_frame($arr, $multiplier, $frame_size=50, $preserve_keys = false) {
        return array_slice($arr, ($multiplier - 1)*$frame_size, $frame_size, $preserve_keys);

    }

    print_r(return_frame($ar, 2, 15, false));
?>

Array
(
    [0] => 16
    [1] => 17
    [2] => 18
    [3] => 19
    [4] => 20
    [5] => 21
    [6] => 22
    [7] => 23
    [8] => 24
    [9] => 25
    [10] => 26
    [11] => 27
    [12] => 28
    [13] => 29
    [14] => 30
)

看看:http://php.net/manual/en/function.array-slice.php

【讨论】:

  • 非常感谢兄弟 :) 爱你
【解决方案2】:

我认为你可以像这样在你的 sql 代码上添加位置和范围:

"select * from blabla order by post desc limit $position,$range"

【讨论】:

  • 不是 sql,我在文本文件中有 url 列表
  • 实际上,当您正确输入数字 1 时,您希望得到 1 到 50 的结果,因此在逻辑中,您只需在某个位置放置一个范围(1 到 50)(您的输入: 1个或等等)
【解决方案3】:

你有从 0 到 2499 的索引。

您希望 $count50。 让我告诉你思考的过程。

因此,如果您将 1 作为 $paramter,您希望 $start 为 0,$end 为 49。

让我们看看:

1-$parameter 是 $start 正确的。 50-$paramter 是 $end 。好的

对于 2,您希望 $start 为 50,$end 为 99;

以上方法在这里不起作用。让我们一起玩$count

$parameter*count; 快结束了。我们必须为 0 索引而努力。所以:

$end 将是 $parameter*$count-1。我们可以看到,对于 1,2 和 3,$parameters 也是如此。 $start 将是 ($parameter-1)*$count 。很快就在脑海中给出了0,50,100。正是我们想要的。

正如@cars10 建议的那样,我们不需要$endarray_slice($arr,($parameter-1)*$count,$count);

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多