我如何取一个数组,将其除以2并创建两个列表?

And*_*ndy 32 php arrays

说我有一个阵列

$array
Run Code Online (Sandbox Code Playgroud)

有没有人能给我一个例子,说明如何使用foreach循环并在计算初始数组总数并将其除以2之后打印两个列表,其余的剩余部分留在第二个列表中?

因此,不是仅使用foreach创建一个长列表,而是创建两个列表?像这样......

  1. 价值1
  2. 价值2
  3. 价值3

然后第二个列表将继续按顺序打印

  1. 价值4
  2. 价值5
  3. 价值6

Mor*_*gil 76

要获取数组的一部分,可以使用array_slice:

$input = array("a", "b", "c", "d", "e");

$len = count($input);

$firsthalf = array_slice($input, 0, $len / 2);
$secondhalf = array_slice($input, $len / 2);
Run Code Online (Sandbox Code Playgroud)

  • 原始海报想要下半部分中的额外元素,但是如果你想要在前半部分使用额外的元素,请在你有$ len/2的两个地方使用round($ len/2). (9认同)
  • @DustinGraham 上半场的 `floor()` 和下半场的 `ceil()` 怎么样?包含 5 个项目的数组将拆分如下:2 / 3 (2认同)

mea*_*gar 15

使用array_chunk到阵列向上循环每个分成多个子阵列,然后.

要找出块的大小应该将数组分成两半,请使用ceil(count($array) / 2).

<?php
$input_array = array('a', 'b', 'c', 'd', 'e', 'f');
$arrays = array_chunk($input_array, 3);

foreach ($arrays as $array_num => $array) {
  echo "Array $array_num:\n";
  foreach ($array as $item_num => $item) {
    echo "  Item $item_num: $item\n";
  }
}
Run Code Online (Sandbox Code Playgroud)

产量

Array 0:
  Item 0: a
  Item 1: b
  Item 2: c
Array 1:
  Item 0: d
  Item 1: e
  Item 2: f
Run Code Online (Sandbox Code Playgroud)


Pee*_*ter 15

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

要将数组切成两半,请使用floor(count($ array)/ 2)来了解您的偏移量.

  • `floor(count($ array)/ 2)`对于具有奇数个元素的数组来说更好. (2认同)

小智 6

这是一个使用 array_chunk 的单行:

list($part1, $part2) = array_chunk($array, ceil(count($array) / 2));
Run Code Online (Sandbox Code Playgroud)

如果您需要保留密钥,请添加 true 作为第三个参数:

list($part1, $part2) = array_chunk($array, ceil(count($array) / 2), true);
Run Code Online (Sandbox Code Playgroud)