php - 将数组分组为 2 个元素的子数组,最后一组缺失

标签 php arrays loops

我从数据库中获取数据,它返回 6 行。我循环遍历它们,将它们添加到临时数组中,然后每 2 次迭代将它们添加到父数组中,这样我就知道有一个包含按 2 分组的子数组的数组。下面,如您所见,我回显每次迭代 6结果。我的分组数组只显示 2 组 2 组,而它应该是 3 组 2 组。我做错了什么?

注意:我检查了数据,前2组数据是正确的,但最后2行缺失。

// group entries into subgroups of 2

$buffer = array();
$entries = array();

for( $i = 0; $i < $journal_entries_count; $i++ )
{

if( $i % 2 == 0 && $i > 0 )
{
    $entries[] = $buffer;

    unset( $buffer );
    $buffer = array();
}

$buffer[] = $journal_entries[ $i ];

echo $i, '<br />';

}

0
1
2
3
4
5

Array
(
[0] => Array
    (
        [0] => Array
            (
                [journal_entry_id] => 196
                [journal_entry_date] => 2014-10-24 20:01:44
                [scoring_type_id] => 1
                [score] => 2662.00
                [wod_title] => yyyyy
                [wod_date] => 2014-09-12
                [strength] => 
                [repscheme] => 
                [benchmark] => Annie
            )

        [1] => Array
            (
                [journal_entry_id] => 197
                [journal_entry_date] => 2014-10-24 20:01:44
                [scoring_type_id] => 1
                [score] => 196.00
                [wod_title] => yyyyy
                [wod_date] => 2014-09-12
                [strength] => 
                [repscheme] => 
                [benchmark] => Badger
            )

    )

[1] => Array
    (
        [0] => Array
            (
                [journal_entry_id] => 195
                [journal_entry_date] => 2014-10-24 20:00:19
                [scoring_type_id] => 1
                [score] => 300.00
                [wod_title] => Koala Bear WOD
                [wod_date] => 2014-10-21
                [strength] => 
                [repscheme] => 
                [benchmark] => Amanda
            )

        [1] => Array
            (
                [journal_entry_id] => 194
                [journal_entry_date] => 2014-10-24 20:00:19
                [scoring_type_id] => 7
                [score] => 5.20
                [wod_title] => Koala Bear WOD
                [wod_date] => 2014-10-21
                [strength] => Back Squat
                [repscheme] => 10RM
                [benchmark] => 
            )

    )

)

解决方案? 我还没有将其标记为解决方案,因为我不确定它是否适用于所有情况, 但在每次迭代时循环它永远不会到达最后一次。

0 = 跳过 - 添加 1 = 跳过 - 添加 2 = 添加 - 添加 3 = 跳过 - 添加 4 = 添加 - 添加 5 = 跳过 - 添加

我添加了 $journal_entries_count + 1,结果现在是正确的。

想法?

最佳答案

如果 $journal_entries_count 为 6,那么在循环结束时,$buffer 将包含两行,但它不会被添加到 $entries.

您需要添加最后一个

$entries[] = $buffer;

循环之后。或者,您可以使用array_chunk:

$entries = array_chunk($journal_entries, 2);

关于php - 将数组分组为 2 个元素的子数组,最后一组缺失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26558055/

相关文章:

php pdo 使用变量更新查询

ios - Swift-使用 Alamofire 发出多个 GET 请求时出现问题

loops - x86 程序集 : Loops!

c - Tries 数据结构 - 打印所有值

php - Drupal 安装问题。奇怪的错误

php - 如何将一个产品插入多个类别 laravel attach()

arrays - Frama-C插件: Resolve array-values

java - 需要对循环中的随机数中的数字求和

php - visual studio 代码 PHP 调试不起作用

php - 如何从多维表单数组递归转换为相关的实体对象