mcaskill/php-array-chunk-by

使用回调函数将数组分割成块。

v1.0.0 2018-08-23 21:48 UTC

This package is not auto-updated.

Last update: 2024-09-19 21:51:45 UTC


README

(PHP 5 >= 5.4)
array_chunk_by — 使用回调函数将数组分割成块。

描述

array array_chunk_by( array $array, mixed $key1 [, mixed $... ] )

通过迭代应用 $callback 函数到 $array 的元素上,将数组分割成数组。

基于 Raivo Laanemets 的 groupAdjacent() 函数。

参数

  • $array — 要进行块分割的数组。
  • $callback — 要使用的回调函数。

    bool callback ( mixed $previous, mixed $current )
    
    • $previous - 保存前一次迭代的值。
    • $current - 保存当前迭代的值。

    如果 $callback 函数返回 TRUE,则将 $array 中的当前值分割成新块。

  • $preserve_keys — 当设置为 TRUE 时,将保留键。默认是 FALSE,这将按数字重新索引块。

返回值

返回一个多维数值索引数组,从零开始,每个维度包含相关元素。

示例

示例 #1 array_chunk_by()

在相邻元素之间的差值大于 1 的地方分割数组。

$input  = [ 1, 2, 3, 4, 14, 21, 23, 28, 29 ];
$result = array_chunk_by( $input, function ($prev, $curr) {
  return ($curr - $prev) > 1;
});

var_export( $result );

上面的示例将输出

array (
  0 => 
  array (
    0 => 1,
    1 => 2,
    2 => 3,
    3 => 4,
  ),
  1 => 
  array (
    0 => 14,
  ),
  2 => 
  array (
    0 => 21,
  ),
  3 => 
  array (
    0 => 23,
  ),
  4 => 
  array (
    0 => 28,
    1 => 29,
  ),
)

示例 #2 array_chunk_by()

将数组分组,其中相邻元素具有相同的值。

$input  = [ 5, 5, 3, 5, 3, 3 ];
$result = array_chunk_by( $input, function ($prev, $curr) {
  return ($previous != $current);
});

var_export( $result );

上面的示例将输出

array (
  0 => 
  array (
    0 => 5,
    1 => 5,
  ),
  1 => 
  array (
    0 => 3,
  ),
  2 => 
  array (
    0 => 5,
  ),
  3 => 
  array (
    0 => 3,
    1 => 3,
  ),
)

安装

使用 Composer

$ composer require mcaskill/php-array-chunk-by

不使用 Composer

你为什么不使用 Composer

从 gist 下载 Function.Array-Group-By.php 并将其保存到项目路径中的某个位置。