php数组函数-array_chunk() 将一个数组分割成多个数组

PHP / 506人浏览 / 0人评论

array_chunk(array $array, int $length, bool $preserve_keys = false) :array 函数返回数据类型为数组。array_chunk() 其实就是将一个数组分割成多个数组,其中每个数组的单元数目由 length 决定。最后一个数组的单元数目可能会少于length 个。

php数组 array_chunk()

支持版本

(PHP 4, PHP 5, PHP 7, PHP 8)

定义和用法

array_chunk(array $array, int $length, bool $preserve_keys = false): array

array_chunk() — 将一个数组分割成多个。

将一个数组分割成多个数组,其中每个数组的单元数目由 length 决定。最后一个数组的单元数目可能会少于length 个。

参数解释

参数描述
array需要操作的数组
length每个数组的单元数目
preserve_keys设为 true,可以使 PHP 保留输入数组中原来的键名。如果你指定了 false,那每个结果数组将用从零开始的新数字索引。默认值是 false。

函数返回值

得到的数组是一个多维数组中的单元,其索引从零开始,每一维包含了 length 个元素。

错误/异常

如果 length 小于 1,会抛出一个 E_WARNING 错误并返回 null。

演示案例一
第三个参数默认false,返回从零开始的新数字索引

$arr = array(
    array(
        'id' => 100,
        'web_url' => 'www.fxzbcn.com',
        'web_title' => '福星之吧',
    ),
    array(
        'id' => 101,
        'web_url' => 'www.baidu.com',
        'web_title' => '百度',
    ),
    array(
        'id' => 102,
        'web_url' => 'www.aliyun.com',
        'web_title' => '阿里云',
    ),
    array(
        'id' => 103,
        'web_url' => 'www.csdn.com',
        'web_title' => 'csdn',
    ),
);
$newArr = array_chunk($arr, 2); // 第三个参数默认false
//$newArr = array_chunk($arr, 2, false);
var_dump($newArr);

返回结果

array(2) {
  [0]=>
  array(2) {
    [0]=>
    array(3) {
      ["id"]=>
      int(100)
      ["web_url"]=>
      string(14) "www.fxzbcn.com"
      ["web_title"]=>
      string(12) "福星之吧"
    }
    [1]=>
    array(3) {
      ["id"]=>
      int(101)
      ["web_url"]=>
      string(13) "www.baidu.com"
      ["web_title"]=>
      string(6) "百度"
    }
  }
  [1]=>
  array(2) {
    [0]=>
    array(3) {
      ["id"]=>
      int(102)
      ["web_url"]=>
      string(14) "www.aliyun.com"
      ["web_title"]=>
      string(9) "阿里云"
    }
    [1]=>
    array(3) {
      ["id"]=>
      int(103)
      ["web_url"]=>
      string(12) "www.csdn.com"
      ["web_title"]=>
      string(4) "csdn"
    }
  }
}

**演示案例二**

第三个参数默认true,返回从零开始的新数字索引

$newArr = array_chunk($arr, 2, true);
var_dump($newArr);

返回结果

array(2) {
  [0]=>
  array(2) {
    [0]=>
    array(3) {
      ["id"]=>
      int(100)
      ["web_url"]=>
      string(14) "www.fxzbcn.com"
      ["web_title"]=>
      string(12) "福星之吧"
    }
    [1]=>
    array(3) {
      ["id"]=>
      int(101)
      ["web_url"]=>
      string(13) "www.baidu.com"
      ["web_title"]=>
      string(6) "百度"
    }
  }
  [1]=>
  array(2) {
    [2]=>
    array(3) {
      ["id"]=>
      int(102)
      ["web_url"]=>
      string(14) "www.aliyun.com"
      ["web_title"]=>
      string(9) "阿里云"
    }
    [3]=>
    array(3) {
      ["id"]=>
      int(103)
      ["web_url"]=>
      string(12) "www.csdn.com"
      ["web_title"]=>
      string(4) "csdn"
    }
  }
}

数组拆分扩展案例

function chunk_iterable($listOfThings, $size) {
    $chunk = 0;
    $chunks = array_fill(0, ceil(count($listOfThings) / $size) - 1, array());
    $index = 0;
    foreach($listOfThings as $thing) {
        // $index 在这里表示传入数组索引,$chunk 在这里表示子数组索引
        // 当 if 条件不成立 就把 $thing 加入 $chunks[$chunk] 数组中
        // 当 if 条件成立 就把 $thing 加入$chunk 索引增大的 $chunks[$chunk] 数组中
        // $index % $size 取余数运算 表示能整除
        if ($index && $index % $size == 0) $chunk++;
        $chunks[$chunk][] = $thing;
        $index++;
    }
    return $chunks;
}

$listOfThings = array(1,2,3,4,5,6,7,8,9,10,11,12,13);
print_r(chunk_iterable($listOfThings, 4));

案例中使用到的PHP函数

ceil()
array_fill()

以上案例输出

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
        )

    [1] => Array
        (
            [0] => 5
            [1] => 6
            [2] => 7
            [3] => 8
        )

    [2] => Array
        (
            [0] => 9
            [1] => 10
            [2] => 11
            [3] => 12
        )

    [3] => Array
        (
            [0] => 13
        )

)

PHP算术运算符

算术运算(Arithmetic Operators)符是处理四则运算(加、减、乘、除四种运算)的符号,在数字的处理中应用得最多。

常用的算术运算符如下表所示。

名称操作符举例
加法运算+$a + $b
减法运算-$a - $b
乘法运算*$a * $b
除法运算/$a / $b
取余数运算%$a % $b
注意:在算术运算符中使用 % 求余,如果被除数($a)是负数,那么取得的结果也是一个负值。

转载注明:

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我