【问题标题】:Get the first N elements of an array?获取数组的前 N ​​个元素?
【发布时间】:2011-04-12 19:34:57
【问题描述】:

最好的方法是什么?

【问题讨论】:

标签: php arrays


【解决方案1】:

使用 array_slice()

这是来自PHP manual: array_slice的示例

$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 0, 3);   // returns "a", "b", and "c"

只是一个小问题

如果数组索引对您有意义,请记住 array_slice 将重置并重新排序 数字 数组索引。您需要将 preserve_keys 标志设置为 true 以避免这种情况。 (第 4 个参数,从 5.0.2 开始可用)。

例子:

$output = array_slice($input, 2, 3, true);

输出:

array([3]=>'c', [4]=>'d', [5]=>'e');

【讨论】:

    【解决方案2】:

    您可以将array_slice 用作:

    $sliced_array = array_slice($array,0,$N);
    

    【讨论】:

      【解决方案3】:

      按当前顺序?我会说array_slice()。由于它是一个内置函数,它会比遍历数组同时跟踪递增索引直到 N 更快。

      【讨论】:

        【解决方案4】:

        array_slice() 是最好的尝试,以下是示例:

        <?php
        $input = array("a", "b", "c", "d", "e");
        
        $output = array_slice($input, 2);      // returns "c", "d", and "e"
        $output = array_slice($input, -2, 1);  // returns "d"
        $output = array_slice($input, 0, 3);   // returns "a", "b", and "c"
        
        // note the differences in the array keys
        print_r(array_slice($input, 2, -1));
        print_r(array_slice($input, 2, -1, true));
        ?>
        

        【讨论】:

          【解决方案5】:

          如果您想获取前 N 个元素将其从数组中删除,您可以使用array_splice()(注意“splice”中的“p”):

          http://docs.php.net/manual/da/function.array-splice.php

          像这样使用它:$array_without_n_elements = array_splice($old_array, 0, N)

          【讨论】:

          • 使用 array_splice 你不需要创建一个新的数组,在 array_spliced $old_array 将成为“没有 n 个元素的数组”之后。如果您不再需要原始数组及其所有元素,请仅使用 array_splice。所以它不会按要求获取元素,而是从原始数组中删除最后 n 个元素。
          猜你喜欢
          • 1970-01-01
          • 2016-04-25
          • 2020-07-22
          • 2017-02-27
          • 2011-07-08
          • 2020-03-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多